《PHP實戰:php過濾輸入操作之htmlentities與htmlspecialchars用法分析》要點:
本文介紹了PHP實戰:php過濾輸入操作之htmlentities與htmlspecialchars用法分析,希望對您有用。如果有疑問,可以聯系我們。
PHP學習本文實例講述了php過濾輸入操作htmlentities與htmlspecialchars用法.分享給大家供大家參考,具體如下:
PHP學習過濾輸入 (即來自所列數據源中的任何數據)是指,轉義或刪除不安全的字符.在數據到達應用的存儲層之前,一定要過濾輸入數據.這是第一道防線.假如網站的評論表單接收html,默認情況下訪客可以毫無阻攔地在評論中加入惡意的<script>標簽,如下標示:
PHP學習
<p>
我的測試
</p>
<script>alert(123)</script>
PHP學習上面例子.如果不過濾這個評論,惡意代碼會存入數據庫,然后再網站的標記中渲染.
PHP學習HTML
PHP學習我們可以使用htmlentities或者htmlspecialchars函數來過濾html,把特殊字符轉換成對應的html實體.
PHP學習htmlentities這個函數轉換所有含有對應“html實體”的特殊字符,比如貨幣表示符號歐元英鎊等、版權符號等,htmlspecialchars 只是把某些特殊的字符轉義了, & " ' < >
PHP學習這2個函數比較傻,默認是不會轉義單引號的
PHP學習
$str='<a href="test.html" rel="external nofollow" >\'測試頁面\'</a><script>alert(213)</script>';
//并沒有轉義單引號
echo $str;
echo "<hr/>".PHP_EOL;
echo htmlentities($str);
echo "<hr/>".PHP_EOL;
echo htmlspecialchars($str);
PHP學習需要設置第2個參數 ENT_QUOTES,具體可以看php手冊
PHP學習
echo htmlentities($str,ENT_QUOTES,'UTF-8'); //單引號也轉義
echo "<hr/>".PHP_EOL;
echo htmlspecialchars($str,ENT_QUOTES,'UTF-8');//單引號也轉義
PHP學習以上例子并不能區別出htmlentities和htmlspecialchars ,下面換上一些特殊的字符,如歐元等.htmlentities將會對此轉義,htmlspecialchars卻不會
PHP學習
echo htmlentities(' <>"').PHP_EOL;
echo "<hr/>".PHP_EOL;
echo htmlspecialchars(' <>"').PHP_EOL; //沒有轉義
PHP學習結論:做一般表單提交的時候完全可以用strip_tags去除html標簽,如果涉及到富文本編輯器需要保留html標簽,可以用htmlspecialchars對提交數據進行過濾.
PHP學習更多關于PHP相關內容感興趣的讀者可查看本站專題:《php程序設計安全教程》、《php安全過濾技巧總結》、《PHP運算與運算符用法總結》、《PHP網絡編程技巧總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
PHP學習希望本文所述對大家PHP程序設計有所幫助.