php中htmlspecialchars()函數和addslashes()函數的使用和區別


在防止被注入攻擊時,常會用到兩個函數:htmlspecialchars()和addslashes()函數。這兩個函數都是對特殊字符進行轉義。

1)addslashes()作用及使用

addslashes()通常用於防止sql注入,它可對通過get,post和cookie傳遞過來的參數的單引號和雙引號已經null前加“\”進行轉義

如:如變量$str=$_POST["str"];的值為:bb' or 1='1。通過addslashes()函數過濾后會變為:bb\' or 1=\'1;

2)htmlspecialchars()作用及使用

htmlspecialchars()也是對字符進行轉義,與addslashes()不同的是htmlspecialchars()是將特殊字符用引用實體替換。

如<script>alert('xss')</script>通過htmlspecialchars()過濾后為&lt;script&gt;alert(&#039;xss&#039;)&lt;/script&gt

3)addslashes()與htmlspecialchars()的區別

除了兩個函數的轉義方式不同外,它們的使用也不同。

addslashes()通過用於防止sql語句注入,在執行sql語句前對通過get、post和cookie傳遞來的參數中的單引號,雙引號,\ 和null進行轉義。

但sql執行成功后,插入到數據庫中的數據是不帶有轉義字符\的。這是如果插入到數據庫中的是一些js腳本,當這些腳本被讀取出來時還是會被執行。

這是我們可對讀取出來的數據使用htmlspecialchars()進行過濾,避免執行被注入的腳本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM