在Web 開發過程中,用戶輸入的內容往往直接用於頁面展示或數據交互。為了防止惡意腳本注入等安全問題,開發者必須對這些輸入數據進行嚴格處理。 htmlspecialchars()是PHP 中用於轉義字符串中特殊字符的重要函數,可以有效地防止XSS(跨站腳本攻擊)等安全隱患。
string htmlspecialchars(
string $string,
int $flags = ENT_COMPAT | ENT_HTML401,
string $encoding = "UTF-8",
bool $double_encode = true
)
該函數會將以下特殊字符轉義為HTML 實體:
通過這些轉義,可以有效防止惡意腳本在瀏覽器中被執行。
$input = '<script>alert("Hello!");</script>';
$output = htmlspecialchars($input);
echo $output;
// 輸出:<script>alert("Hello!");</script>
這個例子中,HTML 標籤被安全地轉義,瀏覽器將其作為純文本而非腳本執行。
$input = 'I\'m "John"';
$output = htmlspecialchars($input, ENT_QUOTES);
echo $output;
// 輸出:I'm "John"
設置ENT_QUOTES參數後,單引號和雙引號都將被轉義,適用於屬性輸出等場景。
$input = '中文字符';
$output = htmlspecialchars($input, ENT_QUOTES, 'GBK');
echo $output;
// 輸出:中文字符
如果指定的字符編碼與輸入數據的實際編碼一致,那麼中文等多字節字符不會被錯誤轉義。
$input = 'special & character';
$output = htmlspecialchars($input, ENT_QUOTES, 'UTF-8', false);
echo $output;
// 輸出:special & character
設置$double_encode為false可以防止已轉義的實體再次被編碼,保持輸出內容的可讀性。
htmlspecialchars()是PHP 提供的一個重要函數,用於確保用戶輸入在頁面中的安全輸出。通過合理設置參數,可以靈活地應對不同編碼和轉義需求,有效地提升應用程序的安全性。在處理表單輸入、動態內容輸出等場景中,推薦開發者優先考慮使用該函數來避免潛在的XSS 攻擊。