xss 攻击 - 打补丁需要更多信息

xss attack - more info required to patch

任何人都可以解释下面的 xss 漏洞是如何工作的(是做什么的)以及修复的最佳方法(使用 php)

https://www.domain.com/page.php?tid=11%22%3E%3Cimg%20src=x%20onerror=alert%28document.cookie%29%3E&id=82

回答: 您显然是在页面上某处输出原始用户输入(在您的情况下为 $_GET['tid']),而没有 "cleaning" 来自特殊 HTML 字符。

"> 部分关闭了您页面上之前打开的一些 HTML 标签,

<img src=x onerror=alert(document.cookie)>插入img来源无效的标签,会导致加载错误,触发onerror绑定javascript.

所以...如果您的 php 代码中有这样的内容:

    <a href="<?php echo $_GET['tid']?>"> some link </a>

它将像这样返回给浏览器(使用您示例中的 $_GET['tid']):

    <a href=""><img src=x onerror=alert(document.cookie)>"> some link </a>

因此浏览器将:

1) 将 a 解析为具有空 href

的 link

2) 尝试加载图片失败

3) 执行imgonerror javascript,这将提醒cookie(在实际攻击中这部分不仅会提醒cookie,还会将它们发送到攻击者的服务器)

建议:

1) 从不 trust/output 原始用户输入(htmlspecialchars() 用于您的 $_GET 参数)

2) Accept/parse 仅适用类型(intval()(int) 用于您的 $_GET 参数)