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的问题相关推荐

  1. htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。

    htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体.语法为:htmlspecialchars(string,quotestyle,character-set). PHP ...

  2. java 过滤xss脚本_Java Web应用程序的反跨站点脚本(XSS)过滤器

    java 过滤xss脚本 这是为Java Web应用程序编写的一个好简单的反跨站点脚本(XSS)过滤器. 它的基本作用是从请求参数中删除所有可疑字符串,然后将其返回给应用程序. 这是我以前关于该主题的 ...

  3. java 过滤脚本_【快学SpringBoot】过滤XSS脚本攻击(包括json格式)

    XSS攻击是什么 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安 ...

  4. Springboot过滤xss

    Springboot过滤xss 两种xss类型:存储型xss.反射型xss. 简介: 存储型:持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代 ...

  5. Java添加过滤器过滤xss入侵

    Filter过滤器过滤XSS攻击 一.springmvc框架 1.添加自定义过滤器文件XssFilter.java和XssHttpServletRequestWrapper.java XssFilte ...

  6. PHP htmlspecialchars()函数用法与实例讲解

    更多python.PHP.JAVA教程请到友情连接: 菜鸟教程https://www.piaodoo.com 茂名一技http://www.enechn.com ppt制作教程步骤 http://ww ...

  7. java过滤函数,过滤函数 (Sun Java System Portal Server 7.2 管理指南)

    过滤函数 过滤函数在"元数据"和"数据"阶段运行,以根据函数及其属性指定的具体条件来允许或拒绝资源.在 filter.conf 文件的"枚举" ...

  8. trim函数 html,trim、stripslashes、htmlspecialchars函数

    通过 PHP 验证表单数据 我们要做的第一件事是通过 PHP 的 htmlspecialchars() 函数传递所有变量. 在我们使用 htmlspecialchars() 函数后,如果用户试图在文本 ...

  9. PHP之stripslashes()函数和htmlspecialchars()函数

    1. 在进行表单验证中通常使用stripslashes()函数对表单提交的数据进行处理.那么该函数是什么意思呢? stripslashes()函数用于清理字符串中的反斜杠(\). 与之相反的是adds ...

最新文章

  1. android11有哪种手机,支持安卓11系统的机型有哪些
  2. SVM算法实现光学字符识别
  3. Random类(Java中的随机类)
  4. Linux 下如何安装软件?
  5. boost::function模块右值的测试程序
  6. java 着色问题 回溯算法,C语言使用回溯法解旅行售货员问题与图的m着色问题
  7. POJ 1159 Palindrome(字符串变回文:LCS)
  8. 为什么程序员一定要加班?
  9. 3.6 - Maya Commands: setAttr
  10. 在肉鸡上构建一个完美的虚拟主机
  11. 一个好的热修复技术,将为你的 App助力百倍
  12. LPC1788 IAP的实现及遇见的问题
  13. 回顾传输层的TCP与UDP协议
  14. [AngularJS面面观] 20. 依赖注入 --- instance注入器以及provider注入器
  15. 6.4.10 删除电子邮件
  16. BZOJ.4453.cys就是要拿英魂!(后缀数组 单调栈)
  17. vue+element 在ie和360浏览器的兼容问题
  18. 使用重力感应传感器和Arduino的手机控制机器人车
  19. 第十一届蓝桥杯大赛软件类B组省赛题目(2020蓝桥杯)
  20. 看板的作用是什么?任务看板如何跟进

热门文章

  1. php提示是否运行,php运行错误提示
  2. python多进程队列中的队列_python 多进程队列数据处理详解
  3. 计算机科学导论课后感悟,计算机科学导论课后总结_2
  4. 在python中用递归的方法编程_python基础之函数,递归,内置函数
  5. 在c语言中数组下标的最小值,数组元素下标的上限_c语言中,数组元素的下标下限为...
  6. 盛金公式解一元三次方程_【国际数学竞赛】高次方程求根
  7. 覆盖php配置文件,配置 – 用另一个文件覆盖php-fpm池配置值
  8. 2014职称计算机考试光盘,江苏省职称计算机考试光盘答案.doc
  9. 嵌入式linux 网络唤醒,C语言实现wake on lan(网络唤醒...-Windows系统下用命令行编译C/C++...-字符串常量引起的思考_169IT.COM...
  10. 五、Python第五课——Python中组织列表的相关函数