2012-03-06 64 views
1

這可能是一個重複的問題,但我無法找到另一個如果是。URL重寫有多安全?

我在尋找關於如何安全url重寫的建議?它會停止SQL注入還是XSS?如果不是的話,那麼它會如何規避?

我問的原因是因爲我不確定重寫過程。我是正確的相信這個網址可以有效地危險:

http://www.website.com/article/1'UNION ALL ...

+1

我不明白它與SQL注入或XSS有什麼關係。 – CodesInChaos 2012-03-06 10:11:06

+0

如果您解釋了哪些方面或URL重寫使您認爲可以幫助解決這些問題,則該問題對社區更有價值。 – 2012-03-06 10:19:31

回答

3

URL重寫與防止SQL注入沒有任何關係! URL重寫主要用於將「醜陋的」URL(如http://domain.com/index.php?name=1&value=2)轉換爲諸如http://domain.com/1/2之類的相當URL。

它根本不防止SQL注入。必須通過確保用戶輸入不包含修改SQL語句的字符來防止SQL注入,以便它執行無意的操作。例如:

你有一個像SQL語句:

SELECT * FROM $tableName; 

而且$tableName是由用戶通過Web表單中輸入的參數。現在用戶可以輸入Users; DROP TABLE Users; --。這會很糟糕:

SELECT * FROM Users; DROP TABLE Users; --; 

但是,這不能通過URL重寫來解決。僅在$ _ GET變量根據

+0

所以我正確地認爲,如果這樣做不合理,這可能是危險的? http://www.website.com/article/1'UNION ALL ... – beingalex 2012-03-06 10:32:47

+1

您應該瞭解,SQL注入不限於錯誤的URL參數。儘管可能存在未經過清理的URL參數可能導致SQL語句中出現意外和不想要的結果的情況,但URL參數並非唯一可能導致意外結果的事情。作爲一般規則:任何不是來自您的代碼(例如URL參數,POST參數,用戶輸入等)的東西都必須進行消毒 - 但URL *重寫*根本無法幫助您。 – 2012-03-06 11:28:46

+0

感謝您的信息。 – beingalex 2012-03-06 12:03:10

1

沒有,URL重寫不能防止XSS或SQL注入。

如果您想避免SQL注入,請在您的代碼中使用DBI庫(包含準備/執行語句)。

如果您想避免XSS攻擊,請在您的代碼中過濾您的用戶輸入。

1

URL重寫和安全性是兩回事。 URL重寫只是改變URL中變量的表示,但根本不安全。從網址中恢復後,我們必須確保代碼中的變量。

0

但對SQL注入,如果我們用這樣的:

重寫規則^([AZ] ) - ([0-9])的.html $的index.php? page = $ 1 & id = $ 2 [L]

$ _GET [「id」]變量是否可注入?我們強制只用整數值。