转义字符,SQL 注入
Posted
技术标签:
【中文标题】转义字符,SQL 注入【英文标题】:Escaping characters, SQL Injection 【发布时间】:2013-07-04 10:17:23 【问题描述】:我在 SQL 注入问题中有这个查询:
"SELECT * FROM user_data WHERE keywords LIKE \%" + querystring + "\% AND owner=’" + owner + "’;"
其中查询字符串由用户直接输入,并且自动设置所有者。 语法应该是正确的,但我不明白 \% 在这个位置做什么......查询不正确不是吗?它应该导致利用查询问题的SQL注入问题,但是这个“\%”真的让我感到不安。
【问题讨论】:
【参考方案1】:假设查询字符串有
'; SELECT * FROM SYS.DATABASES; --
如果黑客使用 CURL 工具进行尝试,您认为会发生什么? 您的语法将带来从第一个查询到所有数据库列表的所有内容,实际上这是一个非常简单的示例。在某些环境中,即使防火墙配置良好,这种注入也可以让黑客进入整个服务器甚至域。
【讨论】:
我的意思是在LIKE之后写\%是没有意义的,这是不正确的,所以即使我们写你写的,我们也会因为这个\%没有正确放置而出错我们? 你是对的,它会导致 SQL 解析失败。为了通过解析,它需要是单引号以上是关于转义字符,SQL 注入的主要内容,如果未能解决你的问题,请参考以下文章
addslashes,htmlspecialchars,htmlentities转换或者转义php特殊字符防止xss攻击以及sql注入