爲了全球安全,使用htmlspecialchars或striptags當用戶POST或GET在PHP中是安全的嗎?XSS清理獲取和帖子
例如,用htmlspecialchars任何職位,並獲得由請求而發送和保存到數據庫
爲了全球安全,使用htmlspecialchars或striptags當用戶POST或GET在PHP中是安全的嗎?XSS清理獲取和帖子
例如,用htmlspecialchars任何職位,並獲得由請求而發送和保存到數據庫
對於顯示的目的,你可以只使用htmlspecialchars()
或htmlentities()
病房的共同XSS攻擊。
不建議strip_tags()
數據(除非它確實需要),因爲如果用戶提供了任何數據,則可能會丟失所有格式。
我會根據你期望得到的結果進行健康檢查。
良好的閱讀(像往常一樣)是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()。