滚动新闻 →
【学英语】最后一个学期结束了,我却不知道下一步该往哪里走 PHP 网站如何防范 XSS?从输出过滤理解跨站脚本攻击 苏轼笔下的赤壁为什么成为文学经典 被控替中共搜集情报 光明日报记者布拉格受审 加国华裔侨领将被遣返 专家:中共渗透再敲警钟 雄鹿队老板遭勒索案 华裔女认罪 或涉中共渗透 胡塞企图秘制导弹? 多个货柜藏大量零组件 中共严查社保欠费 专家指背后收支缺口巨大 美9月PPI创四年半最大增幅 通胀持续升温 存在严重潜逃风险 张婉莹保释申请再被驳回 山药在中国传统饮食文化中的传统用途 一幅书法作品的布局应该怎么看 许皓鋐、赖均辅会师玄乐杯决赛 争百万冠军奖金 “看短剑降智”登顶热搜 网民叹“电子鸦片” 如何教育孩子不要成为校园欺凌的旁观者 码率对视频画质有什么影响 隋朝灭亡究竟是因为大运河还是战争 黑海商船频遭袭 俄超级无人机基地曝光 黄奇帆落马 重庆书记袁家军被指不妙 人权专家:中共实施跨国镇压 是全球头号威胁 OpenAI财务长:使用中国AI模型 恐面临安全风险 特斯拉新跑车将亮相 百公里加速不到一秒 力抗中企长鑫存储 全球芯片大厂结盟 国外车评人评中国电动汽车:缺乏个性 互相抄袭 巴基斯坦校舍坍塌致35死 暴露廉价私校隐患 10月15日维权动态 因言获罪 湖北维权人士周远志贫病中离世 深圳APEC力邀 美企高层反应冷淡 台湾买美国天然气 增大中共封锁台海代价 美财长要求改革世银 停止向中国贷款 延宕12年终通车 中朝大桥背后的三角博弈 超市遭网攻冰箱变烤箱 黑客离你有多远? 美检新增酷刑罪指控 马杜罗夫妇将在纽约应讯 美军拟用“炸弹之母”轰炸伊朗 川普:泄密者应枪决 工卡自动延期取消 最终规则生效 大闸蟹价格大跌 养殖户:今年最难熬 中国免疫系统疾病和心脑血管疾病病例暴增 浙江2医院员工赴泰旅游溺亡 官方称意外引质疑 魔幻! 深圳“花呗”也能缴社保 湖北还推出社保贷 卫生间小空间如何避免产生拥挤感 酱油为什么几乎影响了整个东亚饮食

PHP 网站如何防范 XSS?从输出过滤理解跨站脚本攻击

发布时间: 2026-10-15 19:00:02    最后更新: 2026-10-15 20:37:01    阅读:14  约17 分钟阅读     

PHP 网站如何防范 XSS?从输出过滤理解跨站脚本攻击
图片说明:示意图   图片来源:Public Domain(公有领域)
XSS,也就是跨站脚本攻击,表面上看是网页里出现了一段不应该出现的JavaScript,实际问题却发生在浏览器对输出内容的解析过程中。攻击者提交的数据本身未必具有攻击性,真正危险的是网站把这些数据放进HTML、HTML属性、JavaScript、URL等特定上下文之后,浏览器把原本应该当成普通数据的内容解释成了代码。 因此,PHP网站防范XSS时最重要的概念并不是“把用户输入过滤干净”,而是“在输出到特定上下文时进行正确编码”。这是很多老式PHP教程最容易讲错的地方。HTML文本、HTML属性、JavaScript字符串、CSS和URL并不是同一种语法环境,针对其中一种环境有效的编码方法,并不能自动适用于另外一种环境。 例如用户提交下面这样的评论: 如果PHP直接输出: echo $comment; 浏览器会把其中的 那么仅仅使用htmlspecialchars()并不能建立一个可靠的JavaScript上下文安全边界。更合适的方式是让PHP把数据序列化为JavaScript值: 这里的json_encode()承担的是数据序列化,而不是HTML过滤。它能够把字符串、数字、数组等PHP数据转换为合法的JSON/JavaScript表示形式。需要根据实际嵌入位置选择合适的安全策略,尤其不要把未经处理的用户输入直接拼接进JavaScript源码。 原文提出“脚本标签内使用htmlspecialchars_decode()”则是完全相反的方向。htmlspecialchars_decode()的作用是把HTML实体解码回特殊字符,它不是XSS防御函数。攻击者提交的数据如果已经被编码成安全文本,开发者再调用htmlspecialchars_decode(),反而可能把原本已经失去HTML语义的字符重新恢复成危险字符。因此,不能把这个函数作为JavaScript上下文的安全处理方式。 如果数据只是为了传递给前端JavaScript,更推荐通过JSON数据结构或者data-*属性传递,而不是把用户输入拼接成一段JavaScript源码。例如: 前端再读取这个JSON数据。这样可以把“数据”和“代码”分开,减少字符串拼接带来的上下文混乱。 CSS上下文同样需要单独处理。不能认为只要调用一次htmlspecialchars(),任何位置都安全。例如把用户输入直接拼进style属性或者

捐助(Paypal): https://www.paypal.me/observeccp
订阅中国观察电报 Telegram : https://t.me/s/ObserveCCP