Jay*_*mon 5 security sql-injection
我根据同事的建议使用replaceAll
替换单引号"\\\\'"
,但我很确定这不足以阻止所有SQL注入.
我做了一些谷歌搜索,发现了这个:http://wiki.postgresql.org/wiki/8.1.4_et._al._Security_Release_Technical_Info
这解释了PostgreSQL,但替换不适用于所有SQL管理器吗?(例如,MySQL,例如?)
另外,我想我理解我链接的解释如何用于单反斜杠,但它是否扩展到我使用四个反斜杠的情况?
请注意,我不太熟悉数据库以及它们如何解析输入,但这是我学习更多内容的机会!任何见解将不胜感激.
编辑:我得到了一些非常有用,有用的答案.我的下一个问题是,什么样的输入会破坏我的实现?也就是说,如果你给我输入并且我在前面添加了四个反斜杠的单引号,你会给我什么样的输入来注入SQL代码?虽然我确信我的方法是天真和错误的,但也许一些例子会更好地告诉我在我的"预防"中注入SQL是多么容易.
不,因为反斜杠呢?例如,如果你'
变成\'
,那么输入\'
将变成\\'
一个未转义的单引号和一个“字符文字”反斜杠。对于 mysql,mysql_real_escape_string()
每个平台都应该存在它,因为它在 MySQL 库绑定中。
但还有另一个问题。也就是说,如果数据段周围没有引号。在 PHP 中,这看起来像:
$query="select * from user where id=".$_GET[id];
PoC 漏洞利用非常简单: http://localhost/vuln.php?id=sleep(10)
即使您这样做,mysql_real_escape_string($_GET[id])
它仍然容易受到 SQLi 的攻击,因为攻击者不必打破引号即可执行 SQL。最好的解决方案是参数化查询。
归档时间: |
|
查看次数: |
419 次 |
最近记录: |