HTTP 标头 | X-XSS-保护
HTTP 标头用于通过 HTTP 响应或 HTTP 请求传递附加信息。 HTTP 标头中的 X-XSS-Protection 是一项在检测到 XSS 攻击时阻止页面加载的功能。随着站点内容安全策略的增加,此功能变得不必要。
XSS 攻击: XSS 代表跨站点脚本。在此攻击中,程序是绕过同源策略进入易受攻击的 Web 应用程序。当动态生成的 HTML 代码并且用户输入没有被过滤时,攻击者才可以使用这种攻击。在这种攻击中,攻击者可以将自己的 HTML 代码插入网页中,而浏览器不会检测到该代码。对于他自己的 HTML 代码,攻击者可以轻松获得对数据库和 cookie 的访问权限。为了阻止这种攻击,前几天使用了 X-XSS 保护。
句法:
X-XSS-Protection: directive
XSS 攻击类型:跨站脚本攻击大致分为两类。
- 服务器 XSS:在这种类型的攻击中,黑客会在 HTML 响应中附加不受信任的数据。在这种情况下,服务器端存在漏洞,浏览器只运行响应中存在的脚本。
- 客户端 XSS:在这种类型的 XSS 攻击中,不安全的 javascript 用于更新 DOM 数据。如果我们通过 javascript 调用在 DOM 中添加 javascript 代码,这样的 javascript 调用称为不安全的 javascript 调用。
指令:在此标头文件中,有四个指令:
- 0:禁用 X-XSS-Protection。
- 1:它是默认指令并启用 X-XSS-Protection。
- 1个; mode=block:启用 X-XSS-Protection。如果浏览器检测到攻击,它将不会呈现页面。
- 1个; report=
: 启用 X-XSS-Protection。如果检测到跨站点脚本攻击,则该页面将被清理并由 report-uri 指令报告。
示例 1:在检测到反射的跨站点脚本攻击时阻止页面加载:
HTML
// It enable the protection
X-XSS-Protection: 1; mode=block
// It disable the protection
X-XSS-Protection: 0
HTML
Header set X-XSS-Protection "1; mode=block"
html
add_header "X-XSS-Protection" "1; mode=block";
示例 2:这将在 apache 服务器上运行。
HTML
Header set X-XSS-Protection "1; mode=block"
示例 3:这将在 Nginx 服务器上运行。
html
add_header "X-XSS-Protection" "1; mode=block";
支持的浏览器: HTTP header X-XSS-Protection支持的浏览器如下:
- 谷歌浏览器
- IE浏览器
- 苹果浏览器
- 歌剧