gpt4 book ai didi

internet-explorer-8 - IE8 XSS过滤器: what does it really do?

转载 作者:行者123 更新时间:2023-12-03 06:47:35 31 4
gpt4 key购买 nike

Internet Explorer 8 有一项新的安全功能,XSS filter试图拦截跨站点脚本尝试。是这样描述的:

The XSS Filter, a feature new to Internet Explorer 8, detects JavaScript in URL and HTTP POST requests. If JavaScript is detected, the XSS Filter searches evidence of reflection, information that would be returned to the attacking Web site if the attacking request were submitted unchanged. If reflection is detected, the XSS Filter sanitizes the original request so that the additional JavaScript cannot be executed.

我发现即使没有“反射证据”,XSS 过滤器也会启动,并且我开始认为过滤器只是注意到何时向另一个网站发出请求并且响应包含 JavaScript。

但即便如此也很难验证,因为效果似乎来来去去。 IE 有不同的区域,当我认为我已经重现了问题时,过滤器不再起作用,我不知道为什么。

有人对如何解决这个问题有任何建议吗?过滤器真正在寻找什么?有没有办法让好人将数据 POST 到第 3 方网站,该网站可以返回 HTML 以在 iframe 中显示而不触发过滤器?

背景:我正在从第 3 方网站加载 JavaScript 库。该 JavaScript 从当前 HTML 页面获取一些数据,并将其发布到第 3 方网站,该网站以一些 HTML 进行响应,并在 iframe 中显示。要查看其实际效果,请访问AOL Food页面并单击故事上方的“打印”图标。

最佳答案

它到底有什么作用?它允许第三方链接到您网站的困惑版本。

当[满足一些条件并且]它在查询提交中看到一个字符串也逐字存在于页面中并且它认为可能是危险的时,它就会启动。

假设如果 <script>something()</script>存在于查询字符串和页面代码中,那么一定是因为您的服务器端脚本不安全,并且将该字符串直接反射(reflect)为标记而不转义。

但是,当然,除了某人可能偶然输入的完全有效的查询这一事实之外,它们也很可能是因为有人查看了该页面并故意复制了其中的一部分而匹配的。例如:

http://www.bing.com/search?q=%3Cscript+type%3D%22text%2Fjavascript%22%3E

在 IE8 中遵循这一点,我已经成功破坏了您的 Bing 页面,因此它会给出脚本错误,并且弹出结果位将不起作用。从本质上讲,它为链接被跟踪的攻击者提供了选择和禁用他不喜欢的页面部分的许可,甚至可能包括其他与安全相关的措施,例如 Framebuster 脚本。

IE8 认为什么是“潜在危险”?除了这个脚本标签之外,还有更多、更奇怪的事情。 eg 。更重要的是,它似乎使用文本模式系统(大概是正则表达式)来匹配一组“危险”模板,而不是像最终解析页面本身的任何类型的 HTML 解析器。是的,使用 IE8 并且您的浏览器是 pařṣinͅg HT̈́͜ML w̧̼̜it̏̔h ͙r̿e̴̬g̉̆e͎x͍͔̑̃̽̚。

通过查看查询中的字符串来进行“XSS 保护”完全是伪造的。它无法被“修复”;这个概念本质上是有缺陷的。除了在不需要时介入的问题之外,除了最基本的攻击之外,它无法真正保护您免受任何攻击——而且随着 IE8 的使用越来越广泛,攻击者肯定会绕过这些阻止。如果您忘记正确转义 HTML 输出,您仍然会容易受到攻击;所有 XSS“保护”为您提供的只是一种错误的安全感。不幸的是,微软似乎喜欢这种虚假的安全感; ASP.NET 中的服务器端也有类似的 XSS“保护”。

因此,如果您对 Web 应用程序创作有所了解,并且您已经像个好 child 一样正确地将输出转义为 HTML,那么通过输出 header 来禁用这种不需要的、不可行的、错误的入侵绝对是一个好主意:

X-XSS-Protection: 0

在您的 HTTP 响应中。 (如果您使用的是 ASP.NET,则在页面中使用 ValidateRequest="false"。)

对于那些仍然在 PHP 中将字符串组合在一起而不注意正确编码的人来说......好吧,您最好保留它。不要指望它能真正保护您的用户,但您的网站已经损坏了,所以谁在乎它是否会损坏更多一点,对吧?

To see it in action, visit an AOL Food page and click the "Print" icon just above the story.

啊,是的,我可以在 IE8 中看到这种情况。虽然 IE 对阻止其执行的内容进行了黑客攻击,但并不是很明显......我能看到的唯一跨域请求是 XSS 过滤器的候选者,这是一个到 http://h30405.www3.hp.com/print/start 的请求。 :

POST /print/start HTTP/1.1
Host: h30405.www3.hp.com
Referer: http://recipe.aol.com/recipe/oatmeal-butter-cookies/142275?

csrfmiddlewaretoken=undefined&characterset=utf-8&location=http%253A%2F%2Frecipe.aol.com%2Frecipe%2Foatmeal-butter-cookies%2F142275&template=recipe&blocks=Dd%3Do%7Efsp%7E%7B%3D%25%3F%3D%3C%28%2B.%2F%2C%28%3D3%3F%3D%7Dsp%7Ct@kfoz%3D%25%3F%3D%7E%7C%7Czqk%7Cpspm%3Db3%3Fd%3Do%7Efsp%7E%7B%3D%25%3F%3D%3C%7D%2F%27%2B%2C.%3D3%3F%3D%7Dsp%7Ct@kfoz%3D%25%3F%3D%7E%7C%7Czqk...

blocks参数继续,页面更多乱码。大概有一些东西(巧合?)反射(reflect)在返回的 HTML 中,并触发了 IE8 关于 XSS 漏洞利用的困惑想法之一。

要解决此问题,HP 需要使位于 h30405.www3.hp.com 的服务器包含 X-XSS-Protection: 0 header 。

关于internet-explorer-8 - IE8 XSS过滤器: what does it really do?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2051632/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com