当前位置: 首页 > news >正文

php多种方法实现xss过滤

1. 使用 htmlspecialchars() 函数

htmlspecialchars() 是一个PHP内置函数,用于将特殊字符转换为HTML实体,从而防止浏览器将其解释为HTML或脚本代码。

<?phpfunction sanitizeInput($input) {// 将特殊字符转换为HTML实体return htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
}// 示例
$userInput = '<script>alert("XSS")</script>';
$safeInput = sanitizeInput($userInput);echo "Sanitized Input: " . $safeInput;
// 输出: Sanitized Input: &lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;?>

2. 使用 htmlentities() 函数

htmlentities() 类似于 htmlspecialchars(),但会将所有适用的字符转换为HTML实体。

<?phpfunction sanitizeInputWithEntities($input) {return htmlentities($input, ENT_QUOTES, 'UTF-8');
}// 示例
$userInput = '<img src=x onerror=alert("XSS")>';
$safeInput = sanitizeInputWithEntities($userInput);echo "Sanitized Input: " . $safeInput;
// 输出: Sanitized Input: &lt;img src=x onerror=alert(&quot;XSS&quot;)&gt;?>

3. 自定义过滤函数

在某些情况下,你可能需要自定义过滤逻辑,例如只允许特定的HTML标签或属性。以下是一个简单的示例,只允许<b><i>标签:

<?phpfunction customSanitize($input) {// 允许 <b> 和 <i> 标签return strip_tags($input, '<b><i>');
}// 示例
$userInput = '<b>Bold</b> <script>alert("XSS")</script> <i>Italic</i>';
$safeInput = customSanitize($userInput);echo "Custom Sanitized Input: " . $safeInput;
// 输出: Custom Sanitized Input: <b>Bold</b>  <i>Italic</i>?>

4. 内容安全策略(CSP)

除了过滤输入,还可以通过设置内容安全策略(CSP)来减轻XSS攻击的影响。CSP是一种浏览器安全机制,通过HTTP头来限制资源加载和执行。

<?php// 在PHP中设置CSP头
header("Content-Security-Policy: default-src 'self'; script-src 'self';");?>

我的个人PHP项目:

PHP全文检索引擎 WindSearch: https://github.com/rock365/windsearch

请帮我点个star~谢谢你!

http://www.dtcms.com/a/142974.html

相关文章:

  • 工厂模式具体应用在什么场景?
  • End-to-End从混沌到秩序:基于LLM的Pipeline将非结构化数据转化为知识图谱
  • 【计算机视觉】三维视觉项目 - Colmap二维图像重建三维场景
  • 第二模块·语法迁移篇 —— 第七章 指针的消亡与引用的新生:从内存操作到对象访问的革命
  • 商标起名换了暗示词,通过初审!
  • Linux系统中的网络管理
  • SQL系列:常用函数
  • 每日OJ_牛客_最小差值_排序_C++_Java
  • ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(显示输出类外设之LCD)
  • 深入理解前端安全:CSRF与XSS攻击详解
  • 在小米AX6000中通过米家控制tailscale
  • 使用ref和refs获取DOM元素和组件方法,使用$nextTick解决Vue异步更新的逻辑下无法获取DOM的问题
  • 力扣面试150题-- 存在重复元素 II和最长连续序列
  • 系统架构设计师:计算机组成与体系结构(如CPU、存储系统、I/O系统)案例分析与简答题、详细解析与评分要点
  • 中间件--ClickHouse-12--案例-1-日志分析和监控
  • 如何0基础学stm32?
  • redis和lua为什么能实现事务
  • 智能语音备忘录:SpeechRecognition与gTTS的奇妙融合
  • 在swiftui项目中使用WKWebView加载自定义脚本文件
  • WebSocket介绍
  • 深入剖析JavaScript内存泄漏:识别、定位与实战解决
  • LeetCode 解题思路 42(Hot 100)
  • JMeter实现UI自动化测试的完整方案
  • stack,queue和priority_queue
  • Java @Serial 注解深度解析
  • MATLAB 控制系统设计与仿真 - 39
  • JDBC 数据库连接全解析:从驱动配置到工具类封装
  • 《JVM考古现场(二十三):归零者·重启奇点的终极奥义》
  • 若依(笔记)
  • React-请勿在循环或者条件语句中使用hooks