前言
在寫 PHP 的時候,我們時常會從資料庫中讀取資料,而這些資料可能來自使用者的輸入,所以如果當使用者在你的資料庫寫下 <script>alert('Hello World');</script> 這樣的內容時,你在輸出的時候瀏覽器就會跟著 Hello World,產生 XSS 攻擊的風險。但如果是更嚴重的程式碼,你的網站就有可能面臨風險。
因此,下面提供幾個簡單的方法,讓你的網頁再輸出的時候,可以自動去轉換這些特殊字元。
操作方式
簡單來說,我們可以善用 htmlspecialchars() 或是 htmlentities() 兩種方法。
htmlspecialchars
htmlspecialchars 會轉換網站中 &、"、'、<、> 幾個 html 中常用的字元。使用範例如下:
<?php
$str = "<script>alert('Hello World');</script>";
echo htmlspecialchars($str);
?>
這將會輸出以下內容:
<script>alert('Hello World');</script>
htmlentities
相較於 htmlspecialchars 只有轉換幾個常用字元,htmlentities 則是更全面的轉換,因此效率可能會慢一些,但也會更安全。使用範例如下:
<?php
$str = "<code>CRE0809 © 2025</code>";
echo htmlentities($str);
?>
這將會輸出以下內容:
<code>CRE0809 © 2025</code>