作者:sdauilk_299 | 来源:互联网 | 2023-08-17 23:05
$cOntent=str_replace("\","\\",$content);
$cOntent=str_replace("'","\'",$content);
我现在是这样的 先把变量的 单引号 和 反斜杠替换一下
再正常组装sql
insert into xxx(xxx)values('{$content}')
这样能否确保不被注入?
如果不能 还可以怎么注入呢?
回答
可以使用数据库的orm框架,然后用变量的方式。
Java的话可以使用mybatis,
C#的话可以使用efcore,dapper等。
mybatis的使用方式
QueryWrapper 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(sql, new { Id = id });
}
参考: