xss绕过函数htmlspecialchars

PHP htmlspecialchars()

用于将字符串中的特殊字符转换为HTML实体,以防止XSS攻击,保护HTML内容的安全性.

htmlspecialchars(string,flags,character-set,double_encode)
  • string: 要转化的字符串
  • flags: 可选,规定如何处理引号、无效编码以及使用哪种文档类型
    • flags参数可用的引号类型: 默认值 ENT_COMPAT
      • ENT_COMPAT :默认仅编码双引号。
      • ENT_QUOTES:编码双引号和单引号。
      • ENT_NOQUOTES:不编码任何引号。
  • character-set: 可选,规定要使用的字符集的字符串,默认UTF-8
  • doule_encode: 规定了是否编码已存在的HTML实体。默认true.

被htmlspecialchars认定为特殊字符的主要字符:

  • &(和号): 转换为&
  • "(双引号):转换为"
  • '(单引号): 转换为'
  • <(小于号): 转换为&lt;
  • >(大于号): 转换为&gt;

绕过方式:

  1. 使用不同的编码方式: htmlspecialchars默认会转义为不同HTML实体,但是不会处理所有字符编码方式。
    • 使用unicode编码。unicode编码在html中会被解析为实际的字符。
    • 十六进制编码: 一些浏览器支持十六进制字符,从而绕过htmlspecialchars()
  2. 使用双重编码:
  3. 通过不同字符集绕过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值