PHP SMARTY 樣板引擎

22-3 htmlspecialchars

一、範例

<?php
$img = "<img src='http://cdn.pingwest.com/wp-content/uploads/2015/07/hacker-big.jpg'>";
$script = "<script>alert('XSS')</script>";
//echo $img;
//echo $script;
//echo  htmlspecialchars($img, ENT_QUOTES);
//echo  htmlspecialchars($script, ENT_QUOTES);

 

二、外來變數

  1. 用post方法傳過來的,我們用 $_POST['變數名稱'] 接收。
  2. 用get方法傳過來的,我們用 $_GET['變數名稱'] 接收。
  3. 用 $_REQUEST['變數名稱'] 同時可接收來自 post、get 和 cookie 的變數 。

三、過濾外來變數

  1. 用內建的 htmlspecialchars() 函數來過濾。

  2. 直接用 htmlspecialchars($string) 的話,預設只轉化雙引號,不對單引號做轉義,所以,這樣用htmlspecialchars($string,ENT_QUOTES) 更好。

  3. 另一個和 htmlspecialchars 很像的 htmlentities 函數並不適用中文,因為會連同中文字一起轉義。

  4. 用 htmlentities 和 htmlspecialchars 只能防止XSS攻擊,不能防止SQL隱碼攻擊。
     

    $img = htmlspecialchars($img, ENT_QUOTES);

     

  5. 改用PHP的 filter_var 過濾器亦有同樣效果:

    $img = filter_var($img, FILTER_SANITIZE_SPECIAL_CHARS);