日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

htmlspecialchars() 函数过滤XSS的问题

發布時間:2025/3/8 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 htmlspecialchars() 函数过滤XSS的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?htmlspecialchars()函數的功能如下:

?

htmlspecialchars() 函數把預定義的字符轉換為 HTML 實體。

預定義的字符是:

  • & (和號)成為 &
  • " (雙引號)成為 "
  • ' (單引號)成為 '
  • < (小于)成為 <
  • > (大于)成為 >
它的語法如下: htmlspecialchars(string,flags,character-set,double_encode)

? ? 其中第二個參數flags需要重要注意,很多開發者就是因為沒有注意到這個參數導致使用htmlspecialchars()函數過濾XSS時被繞過。因為flags參數對于引號的編碼如下:

?

可用的引號類型:

  • ENT_COMPAT - 默認。僅編碼雙引號。
  • ENT_QUOTES - 編碼雙引號和單引號。
  • ENT_NOQUOTES - 不編碼任何引號。
默認是只編碼雙引號的!默認只編碼雙引號!默認只編碼雙引號……重要的事情說三遍!!! 于是看下面的代碼:    <?php $name = $_GET["name"]; $name = htmlspecialchars($name); ?> <input type='text' value='<?php echo $name?>'>

  

輕松繞過: 加上ENT_QUOTES參數:
   <?php $name = $_GET["name"]; $name = htmlspecialchars($name, ENT_QUOTES); ?> <input type='text' value='<?php echo $name?>'>

  

? ? ? ? 發現無法繞過了: 查看源代碼:

單引號已經被轉換了。

轉載于:https://www.cnblogs.com/JeromeZ/p/8452819.html

總結

以上是生活随笔為你收集整理的htmlspecialchars() 函数过滤XSS的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。