如何关闭跨站点脚本 (XSS) 筛选器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何关闭跨站点脚本 (XSS) 筛选器相关的知识,希望对你有一定的参考价值。

如何关闭跨站点脚本 (XSS) 筛选器

参考技术A 这个错误是由于 IE8 的跨站脚本(Cross-site scripting, XSS)防护阻止了跨站发送的请求。
点击 IE8 的“工具”-“Internet 选项”,进入“安全”选项卡,打开“Internet”下方的“自定义级别”,在“安全设置”对话框中找到“启用 XSS 筛选器”,改为“禁用”即可。
参考技术B HTTP安全标头是网站安全的基本组成部分。部署这些安全标头有助于保护您的网站免受XSS,代码注入,clickjacking的侵扰。

当用户通过浏览器访问站点时,服务器使用HTTP响应头进行响应。这些header告诉浏览器如何与站点通信。它们包含了网站的metadata。您可以利用这些信息概括整个通信并提高安全性。

HTTP严格传输安全(HSTS)

假设您有一个名为example.com的网站,并且您已安装SSL / TLS证书并从HTTP迁移到HTTPS。但工作还没有结束。很多人在将网站迁移到HTTPS后都会忘了杜绝网站仍能通过HTTP访问的情况。正因如此,HSTS被引入。如果站点配备了HTTPS,则服务器会强制浏览器通过安全的HTTPS进行通信。如此,便完全消除了HTTP连接的可能性。

Strict-Transport-Security: max-age=<expire-time>

Strict-Transport-Security: max-age=<expire-time>;includeSubDomains

Strict-Transport-Security: max-age=<expire-time>; preload

内容安全策略(CSP)

HTTP内容安全策略响应标头通过赋予网站管理员权限来限制用户被允许在站点内加载的资源,从而为网站管理员提供了一种控制感。换句话说,您可以将网站的内容来源列入白名单。

内容安全策略可防止跨站点脚本和其他代码注入攻击。虽然它不能完全消除它们的可能性,但它确实可以将损害降至最低。大多数主流浏览器都支持CSP,所以兼容性不成问题。

Content-Security-Policy:<policy-directive>;<policy-directive>

跨站点脚本保护(X-XSS)

顾名思义,X-XSS头部可以防止跨站脚本攻击。 Chrome,IE和Safari默认启用XSS过滤器。此筛选器在检测到跨站点脚本攻击时不会让页面加载。

X-XSS-Protection:0

X-XSS-Protection:1

X-XSS-Protection:1; mode=block

X-XSS-Protection:1; report=<reporting-uri>

X-Frame-选项

在Orkut世代,有一种名为点击劫持(Clickjacking)的骗术十分流行。攻击者让用户点击到肉眼看不见的内容。比方说,用户以为自己在访问某视频网站,想把遮挡物广告关闭,但当你自以为点的是关闭键时会有其他内容在后台运行,并在整个过程中泄露用户的隐私信息。

X-Frame-选项有助于防范这些类型的攻击。这是通过禁用网站上存在的iframe来完成的。换句话说,它不会让别人嵌入您的内容。

X-Frame-Options: DENY

X-Frame-Options: SAMEORIGIN

X-Frame-Options: ALLOW-FROM https://example.com/

X-Content-Type选项

X-Content-Type标头提供了针对MIME嗅探的对策。它指示浏览器遵循标题中指示的MIME类型。作为发现资产文件格式的功能,MIME嗅探也可用于执行跨站点脚本攻击。

如何修复 Veracode - 跨站点脚本 - CWE ID 80 - 基本 XSS - 在 .each 函数中使用 $(item)

【中文标题】如何修复 Veracode - 跨站点脚本 - CWE ID 80 - 基本 XSS - 在 .each 函数中使用 $(item)【英文标题】:How to fix Veracode - Cross site scripting - CWE ID 80 - Basic XSS - use of $(item) in .each function 【发布时间】:2019-05-05 20:50:12 【问题描述】:

所以,当我们的 Web 应用程序被扫描 Veracode 时,我发现了许多跨站点脚本缺陷,

“网页中与脚本相关的 HTML 标签的不正确中和(基本 XSS)”(CWE ID 80)。

而且,由于我们存在的几个缺陷,我无法弄清楚如何解决这种特殊情况。 下面是我的一段代码-

$(".ui-dialog-buttonset .ui-button:visible").each(function(index, item) 
    var label = $(item).text();
    if (label == "Save" || label == "Create")
        $(item).click();
);

我可以看到在 $(item).text();$(item).click(); 行上报告的缺陷。 我知道,对于文本,我可以使用 DOMPurify.sanitize 之类的东西来清理字符串。 但是,我不明白,为什么 veracode 报告 $(item).click(); 是不是因为$(item)本身不安全? 如果是的话,我该如何解决? 我将不胜感激。

【问题讨论】:

【参考方案1】:

好的,从 DOMPurify 库中找到了修复程序。 您也可以使用 DOMPurify 清理 DOM 元素。 所以,下面的代码有效 -item = DOMPurify.sanitize(item, SAFE_FOR_JQUERY:true);

【讨论】:

以上是关于如何关闭跨站点脚本 (XSS) 筛选器的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 Veracode - 跨站点脚本 - CWE ID 80 - 基本 XSS - 在 .each 函数中使用 $(item)

如何修复JSP表达式标记中的跨站点脚本(XSS)

跨站点脚本编制-XSS 描述及解决方法

如何防止跨站点脚本攻击

playframework 1.x 是不是处理跨站点脚本 (xss)?

XSS- 跨站点脚本:DOM 问题