htaccess重写规则是否有助于防止SQL注入?

时间:2011-01-21 17:25:32

标签: .htaccess sql-injection

我在htaccess中有以下规则:

RewriteRule ^([a-zA-Z0-9\-\_]+)/?$ test.php?&url=$1 [L]

我的问题是:

如果我有以下网址http://www.example.com/this-is-a-title

$url变量是否受SQL注入,或者我不应该担心它,因为RewriteRule只允许使用字母,数字,破折号和下划线而不是引号或撇号或+符号?

编辑: 跟进问题

如果这是网址会发生什么? http://www.example.com/this'is"a+title

当我将它放在网址栏中时,我收到404错误,但实际上发生了什么。符号' " +是被忽略还是被剥离或者究竟是什么?

3 个答案:

答案 0 :(得分:2)

如果在将数据放入查询之前未正确清理数据,则应始终认为自己容易受到SQL注入攻击。使用.htaccess重写不是也不应该被视为防止SQL注入的做法。

使用mysql_real_escape_stringpg_escape_string(如果使用PHP)或使用POSTGET中的变量对所有查询使用预准备语句。总是

答案 1 :(得分:1)

理论上,没有变量不受注射。但是,您仍然应该对您的输入进行消毒。这只是最佳实践,因为如果有人设法通过其他方法攻击服务器,则可以忽略.htaccess。

答案 2 :(得分:1)

这取决于脚本本身。您可能能够对输入进行十六进制编码,例如0x2d3120756e696f6e2073656c656374202e2e2e2e。如果脚本对其进行解码,则.htaccess将无法保护您。