2011-01-21 54 views
1

我在htaccess的以下規則:htaccess重寫規則是否有助於防止SQL注入?

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

我的問題是這樣的:

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

是在$url變量受到SQL注入,或者我不應該擔心它,因爲重寫規則只允許字母,數字,破折號和下劃線,而不是引號或撇號或+符號?

編輯: 跟進問題

正在發生的事情,如果是這樣的網址是什麼? http://www.example.com/this'is"a+title

當我把它放在url欄中時,我得到一個404錯誤,但實際發生了什麼。符號' " +被忽略或剝離或究竟是什麼?

回答

2

如果您在將數據放入查詢之前沒有正確處理數據,那麼您應該始終認爲自己容易受到SQL注入攻擊。使用.htaccess重寫不是也不應該被認爲是防止SQL注入的做法。

使用mysql_real_escape_stringpg_escape_string(如果使用PHP),或使用使用變量從POSTGET上的所有查詢預處理語句。總是。

+0

爲什麼不能接受?在什麼情況下,注入攻擊會在上面的`.htaccess`規則中起作用?我不反對,我只是想知道爲什麼。 – kylex 2011-01-22 22:52:29

1

理論上,沒有變量不受注射。但是,您仍然應該始終清理您的輸入。這只是最佳做法,因爲如果有人設法通過其他方法攻擊服務器,則可能會忽略.htaccess。

1

它取決於腳本本身。您可能能夠對輸入進行十六進制編碼,如0x2d3120756e696f6e2073656c656374202e2e2e2e。如果腳本解碼它,你的.htaccess將無法保護你。