php過濾輸入操作之htmlentities與htmlspecialchars用法分析
本文實例講述了php過濾輸入操作htmlentities與htmlspecialchars用法。分享給大家供大家參考,具體如下:
過濾輸入 (即來自所列數(shù)據(jù)源中的任何數(shù)據(jù))是指,轉(zhuǎn)義或刪除不安全的字符。在數(shù)據(jù)到達(dá)應(yīng)用的存儲層之前,一定要過濾輸入數(shù)據(jù)。這是第一道防線。假如網(wǎng)站的評論表單接收html,默認(rèn)情況下訪客可以毫無阻攔地在評論中加入惡意的<script>標(biāo)簽,如下標(biāo)示:
<p> 我的測試 </p> <script>alert(123)</script>
上面例子。如果不過濾這個評論,惡意代碼會存入數(shù)據(jù)庫,然后再網(wǎng)站的標(biāo)記中渲染。
HTML
我們可以使用htmlentities或者h(yuǎn)tmlspecialchars函數(shù)來過濾html,把特殊字符轉(zhuǎn)換成對應(yīng)的html實體。
htmlentities這個函數(shù)轉(zhuǎn)換所有含有對應(yīng)“html實體”的特殊字符,比如貨幣表示符號歐元英鎊等、版權(quán)符號等,htmlspecialchars 只是把某些特殊的字符轉(zhuǎn)義了, & " ' < >
這2個函數(shù)比較傻,默認(rèn)是不會轉(zhuǎn)義單引號的
$str='<a href="test.html" rel="external nofollow" >\'測試頁面\'</a><script>alert(213)</script>'; //并沒有轉(zhuǎn)義單引號 echo $str; echo "<hr/>".PHP_EOL; echo htmlentities($str); echo "<hr/>".PHP_EOL; echo htmlspecialchars($str);
需要設(shè)置第2個參數(shù) ENT_QUOTES,具體可以看php手冊
echo htmlentities($str,ENT_QUOTES,'UTF-8'); //單引號也轉(zhuǎn)義 echo "<hr/>".PHP_EOL; echo htmlspecialchars($str,ENT_QUOTES,'UTF-8');//單引號也轉(zhuǎn)義
以上例子并不能區(qū)別出htmlentities和htmlspecialchars ,下面換上一些特殊的字符,如歐元等。htmlentities將會對此轉(zhuǎn)義,htmlspecialchars卻不會
echo htmlentities('€ <>"').PHP_EOL; echo "<hr/>".PHP_EOL; echo htmlspecialchars('€ <>"').PHP_EOL; //€沒有轉(zhuǎn)義
結(jié)論:做一般表單提交的時候完全可以用strip_tags去除html標(biāo)簽,如果涉及到富文本編輯器需要保留html標(biāo)簽,可以用htmlspecialchars對提交數(shù)據(jù)進(jìn)行過濾。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php程序設(shè)計安全教程》、《php安全過濾技巧總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計有所幫助。
- php htmlentities和htmlspecialchars 的區(qū)別
- php 去除html標(biāo)記--strip_tags與htmlspecialchars的區(qū)別詳解
- php5.4以上版本GBK編碼下htmlspecialchars輸出為空問題解決方法匯總
- PHP關(guān)于htmlspecialchars、strip_tags、addslashes的解釋
- php htmlspecialchars()與shtmlspecialchars()函數(shù)的深入分析
- php htmlspecialchars加強(qiáng)版
- PHP htmlspecialchars() 函數(shù)實例代碼及用法大全
- PHP htmlspecialchars_decode()函數(shù)用法講解
- PHP htmlspecialchars()函數(shù)用法與實例講解
- php過濾htmlspecialchars() 函數(shù)實現(xiàn)把預(yù)定義的字符轉(zhuǎn)換為 HTML 實體用法分析
相關(guān)文章
PHP簡單獲取網(wǎng)站百度搜索和搜狗搜索收錄量的方法
這篇文章主要介紹了PHP簡單獲取網(wǎng)站百度搜索和搜狗搜索收錄量的方法,涉及php網(wǎng)頁文件的讀取及正則替換的相關(guān)操作技巧,需要的朋友可以參考下2016-08-08jQuery+PHP+ajax實現(xiàn)微博加載更多內(nèi)容列表功能
這篇文章主要介紹了jQuery+PHP+ajax實現(xiàn)微博加載更多內(nèi)容列表功能,對于微博開發(fā)來說非常實用,需要的朋友可以參考下2014-06-06Laravel5.5+ 使用API Resources快速輸出自定義JSON方法詳解
這篇文章主要介紹了Laravel5.5+ 使用API Resources快速輸出自定義JSON方法詳解,需要的朋友可以參考下2020-04-04php5.5使用PHPMailer-5.2發(fā)送郵件的完整步驟
PHPMailer已經(jīng)更新了很多版本了,本教程只針對老版本。下面這篇文章主要給大家介紹了關(guān)于php5.5使用PHPMailer-5.2發(fā)送郵件的完整步驟,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10PHP下escape解碼函數(shù)的實現(xiàn)方法
很多時候需要用到j(luò)s的escape函數(shù)來轉(zhuǎn)換中文字符,可是用js轉(zhuǎn)換后的字符怎么用php來轉(zhuǎn)換回來呢,下面我就找到了兩個很實用的函數(shù)。2010-08-08