任何人都可以解释下面的xss漏洞如何工作(做什么)以及修复的最佳方法(使用php)
答案 0 :(得分:0)
答案: 您显然是在页面上输出原始用户输入($ _GET ['tid'])而不是从特殊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
的{{1}} javascript,它将提醒cookie(在实际攻击中,此部分不仅会提醒Cookie,还会将其发送给攻击者的服务器)
建议:
1)永远不要信任/输出原始用户输入(onerror
参数htmlspecialchars()
)
2)仅接受/解析适当的类型($_GET
或intval()
参数{/ p>}