希望這不是重複的,我無法找到關於該主題的原始問題。如果您有一個供用戶輸入數據的區域,那麼如何在不插入javascript或html的情況下存儲和檢索數據?如何防止服務器端PHP的html或JavaScript注入
舉個例子,假設一個用戶正在發表論壇帖子。他們決定編寫一個html列表或javascript函數,該函數在查看帖子時運行。當你在服務器端收到他們的輸入時,你如何緩解這種情況?特別是PHP的服務器端。
- 根據模式刪除部分字符串數據?
- 在他們的條目周圍使用html標籤嗎?
感謝
希望這不是重複的,我無法找到關於該主題的原始問題。如果您有一個供用戶輸入數據的區域,那麼如何在不插入javascript或html的情況下存儲和檢索數據?如何防止服務器端PHP的html或JavaScript注入
舉個例子,假設一個用戶正在發表論壇帖子。他們決定編寫一個html列表或javascript函數,該函數在查看帖子時運行。當你在服務器端收到他們的輸入時,你如何緩解這種情況?特別是PHP的服務器端。
感謝
我使用HTML Purifier來去掉我不想要的位,並在我所做的位上留下。默認規則非常好,但如果您需要它,它提供了巨大的靈活性。
這看起來像一個神奇的工具。我一定會試試 – Spidy 2011-05-06 04:27:04
您必須刪除或翻譯他們的崗位的違規部分。您可以在帖子進入時執行此操作,並將翻譯的帖子保存到數據庫中,或者每次顯示帖子時都可以執行此操作,並將原始帖子存儲在數據庫中。兩種方法都有其優點和缺點。
至於如何去除不好的東西,用簡單的匹配來代替所有的<和>與& lt;和& gt;還有很長的路要走 - 但除此之外還有很多事情要做。
所有你需要做的,只是最低限度,取代<
與<
。
有很多關於防止代碼注入的教程。微軟的相當全面found here。
對於html注入取決於你想成爲多麼徹底你通常可以放在字符串解析器檢查<>並刪除它們,沒有給出的例外。
它不是在PHP中,但肯定涵蓋的概念,謝謝 – Spidy 2011-05-06 04:24:38
對不起,沒有看到你在PHP工作,但谷歌搜索「防止JavaScript的PHP注射」帶來了少數的SO鏈接,所以要放心那裏有很多信息。 – 2011-05-06 04:29:12
請參閱http://stackoverflow.com/questions/223480/html-encode-user-input-when-storing-or-when-displaying和http://stackoverflow.com/questions/3129899/what-are- the-common-defenses-against-xss和http://stackoverflow.com/questions/34896/when-is-it-best-to-sanitize-user-input – 2011-05-06 04:16:35
這些帖子都沒有回答如何在php – Spidy 2011-05-06 04:19:17
PHP,你說? http://stackoverflow.com/questions/tagged/xss+php;因爲你沒有指定一個,所以我特別尋找語言不可知論的問題。 – 2011-05-06 04:23:06