首页 新闻 赞助 找找看

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

0
悬赏园豆:20 [已解决问题] 解决于 2022-07-31 04:34

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

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

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

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

开窍的主页 开窍 | 初学一级 | 园豆:136
提问于:2022-07-23 11:40
< >
分享
最佳答案
0

可以使用数据库的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 });
            }

参考:

收获园豆:8
智客工坊 | 小虾三级 |园豆:1855 | 2022-07-23 14:20
其他回答(2)
0

可以,ORM也是封装好的,最终也是一段sql而已。

收获园豆:4
LiveCoding | 园豆:497 (菜鸟二级) | 2022-07-23 15:46
0

原生方式的话,可以使用PreparedStatement防止SQL注入
像这样:

下载对应开发语言的驱动包就可以用了

收获园豆:8
飒沓流星 | 园豆:1099 (小虾三级) | 2022-07-23 17:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册