- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我试图“真正”理解进程和线程 - 我读过有关它们的书籍和文章,但总体情况似乎总是缺少一些东西。当然,我可以喋喋不休地谈论细节,例如每个进程如何拥有自己的内存空间以及属于同一进程的线程如何共享相同的内存
在 Perl 的描述中 -i[extension]功能在 http://perldoc.perl.org/perlrun.html ,与以下程序实质上相同的代码被视为使用 perl -pi.orig
我目前正在下类后的空闲时间参加 Coursera 上的 Scala 类(class),试图最终尝试函数式编程。我目前正在处理一项任务,我们应该“计算”包含某个对象的两个集合的并集。我有意省略了细节,因
这里有人说会开放攻击 How do you serialize javascript objects with methods using JSON 这对我来说是一个相当肤浅的答案,因为为什么它比经典
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我正在尝试使用 glsl 在 GPU 中实现图像处理算法,如高斯滤波、双边滤波。 我对哪一部分是“真正的”并行执行感到困惑。例如,我有一个 1280*720 的预览作为纹理。我不太确定哪个部分真正运行
你好 不要说这是一个重复的问题,因为我已经阅读了两天。他们中没有一个真正提供有用的答案。 我在 SD 卡上的一个文件夹中有许多不同的文件。想要根据 apk、txt、mp3、avi、jpg 打开正确的应
我正在尝试使用以下代码保存一些代码。我有一个对象,其中的变量与表行的名称相同,因此我可以创建一个像这样的插入: $query = "INSERT INTO table "; $colu
使用 Qt 我知道 private slots 意味着插槽在直接调用时是私有(private)的,但是 connect() 仍然可以允许信号连接到插槽是否私有(private),公开的,或者我猜, p
考虑以下语句: int *pFarr, *pVarr; int farr[3] = {11,22,33}; int varr[3] = {7,8,9}; pFarr = &(farr
我一直在使用 static 关键字来定义内部链接。后来,我改用 C++ 风格,将本地事物包装在匿名命名空间中。 然而,当我使用匿名命名空间多年后,我开始认为 static 关键字更容易使用! 一个常见
我正在尝试使用 ffmpeg 和 对 DVD 质量的视频进行编码nl 表示 过滤(嗯,这就是标题所说的)。但即使在顶级 Core i7 CPU 上,我每秒也只有 12 帧,并且只有一个内核在使用(75
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在构建我的第一个 Backbone.js 应用程序,但我很困惑我应该向 View 赋予或隐藏多少责任。 在我的示例中,我正在构建一个从集合动态生成的丰富 UI 表(类似于 YUI 的数据网格)。在
新手用户使用 Azure Linux VM,发现删除 VM(停止计费的必要步骤)会留下难以识别和区分的存储残余,这些残余与我想要保留的 Blob(支持 VM 镜像和数据磁盘) , 例如)。 所以我真的
当我在 NetBeans (7.1.2) 中添加组件或任何自动生成注释的内容时,注释每行一个单词。像这样: /* * If * Nimbus * (introduced
我将这个海龟文件加载到两个不同的 OWL 推理器(HermiT 和 RDFox)中: @prefix : . @prefix owl: . @prefix rdf: . @prefix rdfs
我的问题很简单,但(我猜)很难回答: 我的 PHP 网站/Web 应用程序中真的需要完整的模型- View - Controller 设计模式吗? 我无法理解 Controller 如何与 PHP 一
新手用户使用 Azure Linux VM,发现删除 VM(停止计费的必要步骤)会留下难以识别和区分的存储残余,这些残余与我想要保留的 Blob(支持 VM 镜像和数据磁盘) , 例如)。 所以我真的
我将这个海龟文件加载到两个不同的 OWL 推理器(HermiT 和 RDFox)中: @prefix : . @prefix owl: . @prefix rdf: . @prefix rdfs
我是一名优秀的程序员,十分优秀!