【问题标题】:X-Frame-Options: DENY is not working for spring boot REST APIX-Frame-Options:DENY 不适用于 Spring Boot REST API
【发布时间】:2020-01-06 11:03:59
【问题描述】:

我的项目有 ExtJs 作为前端,Spring boot 作为后端。 ExtJs 将调用 spring boot 以响应 JSON。我想在我的项目中防止clickjacking 攻击。我有一个简单的 html 脚本,它只会在 iframe 中加载网站。如果网站在 iframe 中加载,则意味着它不安全。我在 spring boot REST API 响应中添加了以下标志 X-Frame-Options: DENY and Content-Security-Policy: frame-ancestors 'none'; 以防止那。但即便如此,它也不会阻止我的应用程序在iframe 中加载。检查点击劫持是否可能的代码是

<html>
<head>
<title>Clickjack test page</title>
</head>
<body>
<p>Website is vulnerable to clickjacking!</p>
<iframe src="http://localhost:8000" width="1000" height="1000"></iframe>
</body>
</html>

`

这里,localhost:8000 指的是 extjs URL。我研究并发现防止点击劫持的客户端验证不是那么有效。那么在我的项目中是否有任何选项可以防止点击劫持攻击

【问题讨论】:

  • 你能得到 X-Frame-options: DENY 作为响应头表单 API
  • 是的,X-Frame-Options: DENY 在响应头字段中

标签: javascript spring-boot extjs spring-security clickjacking


【解决方案1】:

如果应用程序功能需要,请使用“拒绝”选项来阻止所有分帧,或使用“SAMEORIGN”仅允许源域分帧。

旧版浏览器可能不支持“XFRAME OPTIONS”标头,并且需要基于 JavaScript 的保护来防止点击劫持。有关基于 JavaScript 的保护的信息,请访问 https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Shee

【讨论】:

  • 我的用例仅适用于 DENY 选项。我的浏览器不旧。当我尝试加载 google.com [其中有 X-Frame_Options 标头] 而不是我的 URL 时,页面没有加载,控制台中出现错误,表明标头已设置,因此无法加载
【解决方案2】:

X-Frame-Options: 如果它在响应标头中可用,则 DENY 应该可以解决问题。默认浏览器设置不允许网站加载到 iframe 中。如果您可能更改了浏览器设置或使用了任何会禁用 iframe 选项的插件,那么它将无法正常工作。您可以尝试使用其他浏览器或隐身模式

【讨论】:

  • cross origin header 已经存在,但问题与 Cross origin 无关
【解决方案3】:

问题已通过在 apache 服务器配置文件中设置 Header always append X-Frame-Options DENY 解决

【讨论】:

    猜你喜欢
    • 2021-02-09
    • 1970-01-01
    • 2020-07-09
    • 2020-12-24
    • 1970-01-01
    • 2021-10-15
    • 2020-07-29
    • 2015-04-13
    • 2018-10-18
    相关资源
    最近更新 更多