mysql注入问题 简单的替换value的值能否防注入

$content=str_replace("\","\\",$content);
$content=str_replace("'","\'",$content);

我现在是这样的 先把变量的 单引号 和 反斜杠替换一下
再正常组装sql

insert into xxx(xxx)values('{$content}')

这样能否确保不被注入?
如果不能 还可以怎么注入呢?

回答

可以使用数据库的orm框架,然后用变量的方式。

Java的话可以使用mybatis,
C#的话可以使用efcore,dapper等。

mybatis的使用方式

 QueryWrapper<Article> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(Article::getId, id);

        Article article =articleMapper.selectOne(queryWrapper);
        if (article == null) {
            throw new BizException("文章不存在");
        }

C#中的使用方式

 using (IDbConnection conn = DBConfig.GetSqlConnection())
            {
                string sql = @"SELECT * FROM `t_article_type` WHERE `Id`=@Id";
                return await conn.QueryFirstOrDefaultAsync<ArticleType>(sql, new { Id = id });
            }

参考:

以上是mysql注入问题 简单的替换value的值能否防注入的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>