我正在開發一個基於php的web應用程序,其中有一個文本區域,用戶可以在其中鍵入任何他/她想要的內容,然後將內容存儲在數據庫中後顯示在另一個頁面上。該方案是用戶可以輸入HTML標籤。但是就功能限制而言,我希望允許用戶執行一些標籤,例如<a>
,<div>
等,使剩下的標籤顯示爲明文。
我以前貼了這個問題:
Prevent HTML data from being posted into form textboxes
但只回答方式,例如strip_tags()
和htmlspecialchars()
其或者剝離HTML內容完全顯示剩餘明文或顯示的所有明文不帶選項添加任何標記爲例外,分別。請幫忙。乾杯。是否有可能在textarea內執行一些標記,而將其餘標記作爲明文?
-1
A
回答
1
你可以看看HTML Purifier。這是專門爲此設計的圖書館。
它似乎可以處理任何形式的xss攻擊。另請參閱comparison頁面。
0
在最後一篇文章中提到過,strip_tags()是答案,如果您不習慣閱讀strip_tags()的手冊頁,您會看到您可以告訴它哪些標籤可以使用,這正是您想要的。
0
檢查documentation的strip_tags
,您會看到接受的第二個(可選)參數是一個允許的標籤數組。
0
編輯:誤解了。沒關係D:需要更多的睡眠。看起來你應該只是運行一個htmlspecialchars,並用正則表達式恢復所需的標籤
獲取PHP的翻譯表並去掉那些你不想要的,然後調用strtr();
$table = get_html_translation_table(HTML_SPECIALCHARS);
$table['allowed_tag'] = "";
$table['another_allowed_tag'] = "";
strtr($str, $table);
我還沒有測試,但它應該工作。
相關問題
- 1. 爲什麼某些Web.config轉換標記爲SetParameters.xml而其他標記不是?
- 2. foo.jar未標記爲可執行文件
- 3. 是否有可能將Gmisc中的TransitionPlot標記爲計數?
- 4. 是否有可能將最終覆蓋的方法標記爲
- 5. 是否有可能將XML節點標記爲「必須轉換」?
- 6. 標記爲OneWay的WCF操作是否存在執行超時?
- 7. 有沒有辦法在Windows中保存vim中的文件而不將其標記爲可執行文件?
- 8. 是否有可能將記錄數組作爲記錄字段?
- 9. 內置文本標記,這可能嗎?
- 10. 畫布是否在標記內部呈現標記
- 11. 是否將對象標記爲可串行化發生開銷?
- 12. 如何將一個錨標記放在一個錨標記內
- 13. 有沒有一種方法可以將TokenRegex中的多個標記重新標記爲一個標記?
- 14. 是否有可能添加記事本++打開關閉標記行到Visual Studio?
- 15. Datepicker標籤而不是textarea ...是否可能
- 16. 是否有文檔標記語言可以「做到這一切」?
- 17. 是否有可能創建一個沒有EOF標記的文件?
- 18. RenderControl可以輸出WebControl標記而不是HTML標記嗎?
- 19. 身體標記內的Html標記。可能的JavaScript的問題
- 20. 將一個mysql表中的記錄標記爲真,其餘爲false在一條語句中
- 21. 在Django中,是否有內置的過濾器可以將這些標記爲安全?
- 22. 如何標記標籤和值的列表,其中一些是可編輯的?
- 23. 設置textarea內部的標記位置
- 24. 是否有可能在GNU make的指定目標下的一組其他目標下執行所有語句?
- 25. 可執行文件是否可以將某些內容返回給其他可執行文件?
- 26. 標記,將作爲多個標籤
- 27. 限制作爲標記的行爲標記數量
- 28. 是否有可能在JavaScript中執行JavaScript include標籤?
- 29. 互斥鎖功能是否可以標記爲const
- 30. izpack安裝程序'未標記爲可執行文件'ubuntu
我閱讀手冊頁面,但重點是它完全刪除不作爲例外添加到內容的標籤。我希望剩下的或標籤顯示爲明文。 – ikartik90 2011-02-19 06:46:52
這是什麼意思? – 2011-02-19 07:10:28
問題是我想讓用戶在頁面上顯示一些代碼,就像我們在做計算器時一樣。你有更好的主意來顯示代碼? – ikartik90 2011-02-19 17:28:36