2014-01-29 28 views
0

爲了全球安全,使用htmlspecialchars或striptags當用戶POST或GET在PHP中是安全的嗎?XSS清理獲取和帖子

例如,用htmlspecialchars任何職位,並獲得由請求而發送和保存到數據庫

回答

0

對於顯示的目的,你可以只使用htmlspecialchars()htmlentities()病房的共同XSS攻擊。

不建議strip_tags()數據(除非它確實需要),因爲如果用戶提供了任何數據,則可能會丟失所有格式。

0

我會根據你期望得到的結果進行健康檢查。

良好的閱讀(像往常一樣)是OWASP作弊表:https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet#XSS_Cheat_Sheet

如果你希望純文本,總是使用用htmlspecialchars()顯示它由Web的客戶端時。一些模板引擎,如Twig,已經默認這樣做了。對於這種情況,我不會在保存到數據庫時執行任何檢查,因爲以後您可能需要以不同方式對其他客戶端進行編碼 - 而且您期望它是純文本的,對嗎?

如果用戶有RTE並可以使用HTML,我會使用strip_tags()或類似於其他框架中使用的方法。一個例子是http://svn.openfoundry.org/wowsecmodules/trunk/filter/RemoveXSS.php。 TYPO3也有相當不錯的,你可以通過下載包並尋找到查看TYPO3 /的contrib/RemoveXSS/RemoveXSS.php

一種解決方法是使用這樣的東西BB-代碼或降價,純處理文本,後來在您的代碼中編譯爲HTML,但這大多會讓編輯混淆,如果他不習慣這樣的東西的話。

我不建議在所有,但它可能是讓瀏覽器做的工作 - 看XSS Basic Understanding

編輯:

兩個庫,我掛在這裏從HTML移除XSS數據都基於同一個數據庫,但已被分成不同的項目和社區應用修補程序等。這種方法的目標是像你這樣的,即使是這樣,我不支持它,因爲它聽起來像一個放之四海而皆準的解決辦法:

Usage: Run *every* variable passed in through it. 
* The goal of this function is to be a generic function that can be used to 
* parse almost any input and render it XSS safe. ... 

爲什麼我反對在每個輸入變量運行此方法?你不會想到你真正想得到什麼。也許你只是想純文本...在這種情況下,正如我在此前寫的,你不需要這樣做,但只需在HTML上下文中顯示時使用htmlspecialchars()。