術語介紹
名詞簡介
htmlspecialchars
字元
預定義的字元是:
&(和號) 成為&
" (雙引號) 成為 "
' (單引號) 成為 '
< (小於) 成為 <
> (大於) 成為 >
使用語法
htmlspecialchars(string,quotestyle,character-set) |
參數 | 描述 |
string | 必需。規定要轉換的字元串。 |
quotestyle | 可選。規定如何編碼單引號和雙引號。 |
ENT_COMPAT - 默認。僅編碼雙引號。 | |
ENT_QUOTES - 編碼雙引號和單引號。 | |
ENT_NOQUOTES - 不編碼任何引號。 | |
character-set | 可選。字元串值,規定要使用的字元集。 |
ISO-8859-1 - 默認。西歐。 | |
ISO-8859-15 - 西歐(增加 Euro 符號以及法語、芬蘭語字母)。 | |
UTF-8 - ASCII 兼容多位元組 8 比特 Unicode | |
cp866 - DOS 專用 Cyrillic 字元集 | |
cp1251 - Windows 專用 Cyrillic 字元集 | |
cp1252 - Windows 專用西歐字元集 | |
KOI8-R - 俄語 | |
GB2312 - 簡體中文,國家標準字元集 | |
BIG5 - 繁體中文 | |
BIG5-HKSCS - Big5 香港擴展 | |
Shift_JIS - 日語 | |
EUC-JP - 日語 |
更多了解HTMLSpecialChars
HTMLSpecialChars重要性
如果不用 HTMLSpecialChars,就會導致讀取時,要把" <script>"之類的HTML標籤“原本”的輸出,而這一輸出就有漏洞了,萬一那個插入資料庫的人是黑客,插入的不是一般的字元串,而是 “ <script> <b> <body>”等等之類的東西,讀取後,就是一個HTML文檔之類的東西,這樣,他可以利用這個漏洞欺騙其他人,或者借這個漏洞攻擊別人等等,搞個框架跳轉到某一網站等等操作。
提示和注釋
提示:無法被識別的字元集將被忽略,並由 ISO-8859-1 代替。
例子
<html> <body> <?php $str = "John & 'Adams'"; echo htmlspecialchars($str, ENT_COMPAT); echo "<br />"; echo htmlspecialchars($str, ENT_QUOTES); echo "<br />"; echo htmlspecialchars($str, ENT_NOQUOTES); ?> </body> </html> | 代碼: <?php $str="<p>123</p>"; echo $str."<br/>"; echo htmlspecialchars($str); ?> 結果: 123 <p>123</p> |
瀏覽器輸出:
John & 'Adams' John & 'Adams' John & 'Adams' |
如果在瀏覽器中查看原始碼,會看到這些 HTML:
<html> <body> John & amp; 'Adams'<br /> John & amp; & #039; Adams& #039; <br /> John & amp; 'Adams' </body> </html> |