转义字符,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 注入的主要内容,如果未能解决你的问题,请参考以下文章

Java - 转义字符串以防止 SQL 注入

addslashes,htmlspecialchars,htmlentities转换或者转义php特殊字符防止xss攻击以及sql注入

sql注入逃逸双引号转义

sql绕过转义符注入

面试题:SQL注入漏洞总结

防止XSS注入的方法