XSS攻击常见防御函数及其绕过手段

📅 2026/8/1 21:06:12 👁️ 阅读次数 📝 编程学习
XSS攻击常见防御函数及其绕过手段

in_array($file_ext, $deny_ext)

作用

黑名单后缀过滤
绕过方法

(1)Apache 默认解析的原则很宽泛 使用以下后缀 php3 phar PHP php(空格) php. php::$DATA 绕过

(2)上传.htaccess文件 修改配置 前提是该文件被设置为可被覆写
strtolower()

作用

黑名单大小写过滤

绕过方法

(1)使用以下后缀 php3 phar php(空格) php. php::$DATA 绕过

(2)上传.htaccess文件 修改配置

trim()

作用

去除文件名末尾空格

绕过方法

(1)使用以下后缀 php3 phar PHP php. php::$DATA 绕过

(2)上传.htaccess文件 修改配置

deldot()

作用

去除末尾的点

绕过方法

(1)使用以下后缀 php3 phar PHP php(空格) php::$DATA 绕过

(2)上传.htaccess文件 修改配置

若目标依次执行 deldot()(去末尾点)、trim()(去首尾空格)等过滤 可以利用“点 + 空格 + 点”组合绕过,如shell.php. .。经过多次过滤后仍可还原为 shell.php

getimagesize()

作用

检查文件是否为合法图片

绕过方法

​​​​​​​(1)在合法图片文件的末尾追加 PHP 代码。getimagesize()只检查文件头,不解析文件尾部
exif_imagetype()

作用

读取文件头签名校验

绕过方法

​​​​​​​(1)在合法图片文件的末尾追加 PHP 代码。exif_imagetype() 只检查文件头,不解析文件尾部

imagecreatefromjpeg()

作用

二次渲染 使用 GD 库将上传的图片重新解码并重新编码保存。此过程会丢弃图片中所有非图像数据

绕过方法

对比原图和二次渲染后的图片,找到未被修改的数据块,将 PHP 代码写入该区域

move_uploaded_file()

作用

文件移动

绕过方法

使用后缀 php/ 绕过