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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539416.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c語言中 字母對應的數值,C語言編程:求下式中每個字母所代表的數字

編寫程序求解下式中各字母所代表的數字&#xff0c;不同的字母代表不同的數字。PEAR- ARA PEA*問題分析與算法設計類似的問題從計算機算法的角度來說是比較簡單的&#xff0c;可以采用最常見的窮舉方法解決。程序中采用循環窮舉每個字母所可能代表的數字&#xff0c;然后將字母…

用mac的python寫網絡爬蟲_在mac下使用python抓取數據

2015已經過去&#xff0c;這是2016的第一篇博文&#xff01; 祝大家新年快樂&#xff01; 但是我還有好多期末考試&#xff01; 還沒開始復習&#xff0c;唉&#xff0c;一把辛酸淚&#xff01; 最近看了一遍彥祖的文章叫做 所以自己也想小試牛刀.于是便開始動手寫,但初次接觸,…

運輸配送信息Delivery_Information

為什么80%的碼農都做不了架構師&#xff1f;>>> 運輸配送信息Delivery_Information 金銀倉會選用以下運輸公司&#xff0c;為客戶配送磁磚傢俬潔具&#xff1a; 佛山冠昌達中港運輸&#xff08;散貨或包車&#xff0c;近佛山石灣的磁磚倉庫&#xff0c;近樂從傢俬城…

linux的 dev vdal,RAZVOJ DELA NA DALJAVO V SLOVENIJI

摘要&#xff1a;V diplomskem delu bomo raziskovali razvoj dela na daljavo v Sloveniji. Na? poglavitni cilj je prikazati ?irjenje teledela v Sloveniji. Drugod po Evropi se ?e vrsto let uveljavlja tudi ta vrsta opravljanja dela, pri nas pa manj. O tem lah…

Spring+SpringMVC+Mybatis 多數據源整合

原文地址&#xff1a;http://blog.csdn.net/q908555281/article/details/50316137 ----------------------------------- 此篇文章是基于Spring3.0和mybatis3.2的總體大概流程 &#xff1a;1. 拷貝所需jar 2.寫一個數據庫切換的工具類&#xff1a;DataSourceContextHolder&am…

查看mysql sql執行器優化后的sql

EXPLAIN EXTENDED select s.* from student s where s.sid in ( select sid from sc where sc.cid 0 and sc.score 100); show WARNINGS;

git ssh拉取代碼_win10下git初始安裝及配置工作

git安裝從https://git-scm.com/https://git-scm.com/download/win 中下載安裝包&#xff0c;點擊exe文件運行&#xff0c;選擇安裝路徑即可安裝。git配置初次運行git前的配置&#xff0c;新建文件夾1、 新建一個文件夾&#xff0c;用來存放代碼的文件夾---2、 打開文件夾&#…

用ABAP 生成二維碼 QR Code

除了使用我的這篇blogStep by step to create QRCode in ABAP Webdynpro提到的使用ABAP webdynpro生成二維碼之外&#xff0c;也可以通過使用二維碼在線生成網站提供的service來生成二維碼。 二維碼在線生成網站&#xff1a; www.makepic.com/qrcode.php 在網頁上輸入要生成的二…

c語言不用第三變量,C語言中幾種不用第三變量交換兩值的方法

int main(){int a3,b4;int *p(int *)malloc(sizeof(int));*p3;int *q(int *)malloc(sizeof(int));*q4;int a24,b27;printf("***位運算****/n");printf("轉換前&#xff1a;%d %d/n",a,b);a^b^a^b;printf("轉換后&#xff1a;%d %d/n",a,b);print…

聯想m7400pro清零方法_聯想打印機怎么清零 聯想打印機清零方法【教程】

今天小編為讀者挑選出了聯想 打印機 部分機型的清零方式&#xff0c;希望閱讀完這篇文章能幫助到各位。LJ3010A、LJ3116A、LJ3220A清零方式先點擊控制面板上的“聯機”按鈕&#xff0c;讓打印機處于脫機狀態&#xff0c;再點擊“執行”按鈕進行打印。先點擊控制面板上的“聯機”…

mapperLocations屬性通配符的使用

mapperLocations屬性通配符的使用 示例&#xff1a; [html] view plaincopy <bean id"sqlSessionFactory" class"org.mybatis.spring.SqlSessionFactoryBean"> <property name"dataSource" ref"dataSource" /> …

c語言中數組名可以與其他變量名相同,C語言初學者入門講座?第九講?數組(1)...

C語言初學者入門講座 第九講 數組(1)(2007-01-17 11:39:19)數組在程序設計中&#xff0c;為了處理方便&#xff0c;把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數據元素的集合稱為數組。在C語言中&#xff0c;數組屬于構造數據類型。一個數組可以分解為…

pb通過對象名稱調用對象_C++ 可調用對象(二)

點擊上方“藍字”&#xff0c;發現更多精彩。本文在前一篇關于函數對象、bind 函數的基礎上&#xff0c;對 C 中 lambda不表達式的使用進行總結。lambda01PART定義一個 lambda 表達式表示一個可調用的代碼單元&#xff0c;可以理解為是一個未命名的內斂函數。類似任何函數&…

easyui datagrid 表格組件列屬性formatter和styler使用方法

明確單元格DOM結構 要想弄清楚formatter和styler屬性是怎么工作的&#xff0c;首先要弄清楚datagrid組件內容單元格的DOM接口&#xff0c;注意&#xff0c;這里指的是內容單元格&#xff0c;不包括標題單元格&#xff0c;標題單元格的結構有所區別。我們所有內容單元格的默認DO…

c+++11并發編程語言,C++11并發編程:多線程std:thread

原標題&#xff1a;C11并發編程&#xff1a;多線程std:thread一&#xff1a;概述C11引入了thread類&#xff0c;大大降低了多線程使用的復雜度&#xff0c;原先使用多線程只能用系統的API&#xff0c;無法解決跨平臺問題&#xff0c;一套代碼平臺移植&#xff0c;對應多線程代碼…

交換機虛擬化和堆疊的區別_核心交換機和普通交換機有何區別?

提起核心交換機與普通交換機有什么區別&#xff1f;相信很多朋友都有點迷惑&#xff0c;今天我們一起來了解下。核心交換機并不是交換機的一種類型&#xff0c;而是放在核心層(網絡主干部分)的交換機叫核心交換機。一般大型企業網絡和網吧需要購買核心交換機來實現強大的網絡擴…

tmpfiles.d導致的unix:///tmp/supervisor.sock no such file坑(待續)

為什么80%的碼農都做不了架構師&#xff1f;>>> 系統環境: CentOS Linux release 7.1.1503 (Core) supervisor 3.3.1今天初七&#xff0c;剛放完假需要去supervisor restart下程序。發現報了這個錯誤。但是看supervisord的進程還在運行&#xff0c;項目代碼也還在…

springMVC兩種方式實現多文件上傳及效率比較

springMVC實現多文件上傳的方式有兩種&#xff0c;一種是我們經常使用的以字節流的方式進行文件上傳&#xff0c;另外一種是使用springMVC包裝好的解析器進行上傳。這兩種方式對于實現多文件上傳效率上卻有著很大的差距&#xff0c;下面我們通過實例來看一下這兩種方式的實現方…

c語言 個位,如何才能給C語言增加幾個位操作函數

在匯編語言中有直接對位進行操作的指令&#xff0c;如置位、復位、位取反、測試某一位等&#xff0c;這對于硬件操作十分方便&#xff0c;在C語言中盡管也提供了一些位操作手段&#xff0c;如按位與、按位或、按位取反等&#xff0c;但它們是對一個字節進行操作&#xff0c;如要…

hsrp 切換_HSRP、VRRP、GLBP | 網絡工程師之網關高可用、冗余

在RS的學習過程中我們接觸到很多網絡技術&#xff0c;后面就把工作中常用的拿來與大家分享&#xff0c;本次我們來分享網關冗余技術。當我們的網關設備無法使用堆疊(VSS,istack&#xff0c;IRF)&#xff0c;或者不同廠商設備的時候&#xff0c;非常有效&#xff0c;能夠提供網關…