這可能是一個重複的問題,但我無法找到另一個如果是。URL重寫有多安全?
我在尋找關於如何安全url重寫的建議?它會停止SQL注入還是XSS?如果不是的話,那麼它會如何規避?
我問的原因是因爲我不確定重寫過程。我是正確的相信這個網址可以有效地危險:
http://www.website.com/article/1'UNION ALL ...
這可能是一個重複的問題,但我無法找到另一個如果是。URL重寫有多安全?
我在尋找關於如何安全url重寫的建議?它會停止SQL注入還是XSS?如果不是的話,那麼它會如何規避?
我問的原因是因爲我不確定重寫過程。我是正確的相信這個網址可以有效地危險:
http://www.website.com/article/1'UNION ALL ...
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變量根據
所以我正確地認爲,如果這樣做不合理,這可能是危險的? http://www.website.com/article/1'UNION ALL ... – beingalex 2012-03-06 10:32:47
您應該瞭解,SQL注入不限於錯誤的URL參數。儘管可能存在未經過清理的URL參數可能導致SQL語句中出現意外和不想要的結果的情況,但URL參數並非唯一可能導致意外結果的事情。作爲一般規則:任何不是來自您的代碼(例如URL參數,POST參數,用戶輸入等)的東西都必須進行消毒 - 但URL *重寫*根本無法幫助您。 – 2012-03-06 11:28:46
感謝您的信息。 – beingalex 2012-03-06 12:03:10
沒有,URL重寫不能防止XSS或SQL注入。
如果您想避免SQL注入,請在您的代碼中使用DBI庫(包含準備/執行語句)。
如果您想避免XSS攻擊,請在您的代碼中過濾您的用戶輸入。
URL重寫和安全性是兩回事。 URL重寫只是改變URL中變量的表示,但根本不安全。從網址中恢復後,我們必須確保代碼中的變量。
但對SQL注入,如果我們用這樣的:
重寫規則^([AZ] ) - ([0-9])的.html $的index.php? page = $ 1 & id = $ 2 [L]
$ _GET [「id」]變量是否可注入?我們強制只用整數值。
我不明白它與SQL注入或XSS有什麼關係。 – CodesInChaos 2012-03-06 10:11:06
如果您解釋了哪些方面或URL重寫使您認爲可以幫助解決這些問題,則該問題對社區更有價值。 – 2012-03-06 10:19:31