xss 攻击 - 打补丁需要更多信息
xss attack - more info required to patch
任何人都可以解释下面的 xss 漏洞是如何工作的(是做什么的)以及修复的最佳方法(使用 php)
回答:
您显然是在页面上某处输出原始用户输入(在您的情况下为 $_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) 执行img
的onerror
javascript,这将提醒cookie(在实际攻击中这部分不仅会提醒cookie,还会将它们发送到攻击者的服务器)
建议:
1) 从不 trust/output 原始用户输入(htmlspecialchars()
用于您的 $_GET
参数)
2) Accept/parse 仅适用类型(intval()
或 (int)
用于您的 $_GET
参数)
任何人都可以解释下面的 xss 漏洞是如何工作的(是做什么的)以及修复的最佳方法(使用 php)
回答: 您显然是在页面上某处输出原始用户输入(在您的情况下为 $_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
2) 尝试加载图片失败
3) 执行img
的onerror
javascript,这将提醒cookie(在实际攻击中这部分不仅会提醒cookie,还会将它们发送到攻击者的服务器)
建议:
1) 从不 trust/output 原始用户输入(htmlspecialchars()
用于您的 $_GET
参数)
2) Accept/parse 仅适用类型(intval()
或 (int)
用于您的 $_GET
参数)