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()進行過濾,避免執行被注入的腳本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章