現在我正在使用htmlspecialchars(mysql_escape_string($value))
,但有沒有一種方法可以用一個語句而不是嵌套語句來清理它?同時消毒HTML和SQL?
0
A
回答
1
mysql_real_escape_string
最近實際上已經不受歡迎了。
現在優選使用PDO
或mysqli
。他們都默認使用PHP。他們使用名爲parameterized queries
的東西來訪問數據庫,而不是自己寫SQL命令。這意味着您不必擔心轉義,因爲查詢和變量分別傳遞到函數中。
您可以瞭解更多關於PDO這裏: http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/
與此相關的,常規的做法是把用戶輸入存儲到數據庫「因爲它被寫了」,而不是使用htmlspecialchars
。然後,您應該使用htmlspecialchars
轉移網站上出現的任何數據。這是由OWASP推薦的慣例。
這是因爲你需要根據上下文轉義不同的東西。此字符串:
' <script src="http://example.org/malice.js"></script> ]}\\\\--
...需要區別對待,如果它是JSON
用作參數(引號和反斜線和]
和}
需要進行轉義),HTML
(引號和<
小號需要轉義),或者寫成URL
(幾乎所有的東西都需要轉義)。如果你需要花時間指導你的JavaScript去解碼HTML,那麼你的代碼會很快變得混亂。
這種做法也使得修復bug簡單:如果你的網站有地方內容是不是一個單一頁面上正確轉義的錯誤,那麼你就可以更新頁面,一切是固定的。如果您的網站存在錯誤地將數據存儲在數據庫中的錯誤,那麼您需要修復數據庫中的所有內容(這將花費更長時間並損害更多用戶)。
2
那麼沒有一個函數可以處理它們兩個。 您可以使用預先準備好的語句和html puffier類,也許那麼「外觀和感覺」會稍微好一點:)
相關問題
- 1. VBScript SQL消毒
- 2. AngularJS和消毒 - 消毒HTML沒有ngBind指令
- 3. 消毒HTML數據
- 4. 消毒HTML代碼
- 5. PHP HTML消毒器
- 6. 消毒SQL數據
- 7. 如何紡織和消毒html?
- 8. 基於JavaScript的X/HTML和CSS消毒
- 9. 用於HTML消毒的庫
- 10. 消毒:: HTML有口音CakePHP2.0
- 11. html消毒造成困難
- 12. 消毒一些SQL查詢
- 13. 這個SQL消毒代碼
- 14. C++ SQL消毒庫或查詢生成器發售消毒
- 15. Html淨化器和Html消毒劑的區別
- 16. 紅寶石消毒代碼...爲什麼和消毒
- 17. MySQL的消毒上和mysql_fetch_row
- 18. jQuery Ajax和PHP消毒
- 19. MSMQ中毒消息和TimeToReachQueue
- 20. 消毒/清理HTML API性反應
- 21. 在wordpress中消毒,但保持html
- 22. PDO&消毒日期/刪除HTML
- 23. HTML消毒,限制圖像數量
- 24. HTML消毒 - 糟糕的標記?
- 25. 角$消毒與NG綁定,HTML
- 26. OWASP HTML消毒劑清洗意見
- 27. 清潔/消毒HTML,但保持與的Ruby/Rails +引入nokogiri +消毒(?)
- 28. 胖免費的框架sql消毒
- 29. 消毒的Array
- 30. 消毒Vaadin RichTextArea
不,沒有魔法轉義功能,您需要爲輸出到的媒體準備數據。 – jeroen
[mysql_函數已被棄用](http://news.php.net/php.internals/53799)。如果可能的話使用[PDO](http://php.net/manual/en/book.pdo.php) –
在旁註:sql轉義應該在html轉義之後出現,否則您可能仍然存在sql注入的風險,損壞的數據,或只是損壞的查詢。看起來不大可能,但訂單應該固定不分。 –