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

.htaccess htaccess重写规则是否有助于防止SQL注入?,.htaccess,sql-injection,.htaccess,Sql Injection,我在htaccess中有以下规则: RewriteRule ^([a-zA-Z0-9\-\_]+)/?$ test.php?&url=$1 [L] 我的问题是: 如果我有以下URLhttp://www.example.com/this-is-a-title $url变量是否受SQL注入的影响,或者我不必担心它,因为重写规则只允许字母、数字、破折号和下划线,而不允许引号、撇号或+符号 编辑: 跟进问题 如果这是url,会发生什么http://www.example.com/this'是'

我在htaccess中有以下规则:

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

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

$url
变量是否受SQL注入的影响,或者我不必担心它,因为重写规则只允许字母、数字、破折号和下划线,而不允许引号、撇号或+符号

编辑: 跟进问题

如果这是url,会发生什么<代码>http://www.example.com/this'是'a+标题


当我把它放在url栏中时,我得到了一个404错误,但实际发生了什么。符号“+是否被忽略或删除,或者是什么?

理论上,不,变量不需要注入。但是,您仍然应该始终对输入进行消毒。这只是最佳实践,因为如果有人试图用另一种方法攻击服务器,您的.htaccess可能会被忽略

理论上,变量不需要注入。但是,您仍然应该始终对输入进行消毒。这只是最佳实践,因为如果有人试图用另一种方法攻击服务器,您的.htaccess可能会被忽略.htaccess重写不是也不应该被认为是防止SQL注入的一种做法


使用
mysql\u real\u escape\u string
pg\u escape\u string
(如果使用PHP),或使用
POST
GET
中的变量对所有查询使用准备好的语句。如果你在把数据放入一个查询之前没有正确的清理数据,你应该总是认为自己很容易受到SQL注入攻击。使用
.htaccess
重写不是也不应该被认为是防止SQL注入的一种做法


使用
mysql\u real\u escape\u string
pg\u escape\u string
(如果使用PHP),或使用
POST
GET
中的变量对所有查询使用准备好的语句。始终。

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

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

为什么不可接受?在什么情况下,注入攻击可以使用上述
.htaccess
规则工作?我并不反对,我只是想知道为什么。作为你唯一的防线,这是不可接受的。通过默默无闻实现安全是不应该的。只需一个人就可以找出直接URL并加以利用。您应该总是,总是,总是清理进入数据库的数据。总是。为什么不能接受?在什么情况下,注入攻击可以使用上述
.htaccess
规则工作?我并不反对,我只是想知道为什么。作为你唯一的防线,这是不可接受的。通过默默无闻实现安全是不应该的。只需一个人就可以找出直接URL并加以利用。您应该总是,总是,总是清理进入数据库的数据。总是