我有一个 django 应用程序,它使用 iframe 来显示存储在本地机器中的 pdf,如下所示:
<embed src="path_to_file.pdf" type="application/pdf">
Run Code Online (Sandbox Code Playgroud)
在所有受支持的浏览器中一切正常……直到今天。
该应用程序突然停止在 Chrome 上运行,控制台显示消息Refused to display 'path_to_file.pdf' in a frame because it set 'X-Frame-Options' to 'deny'。
在其他浏览器中,它仍然像往常一样工作。我不知道 Chrome 是刚刚进行了更新还是发生了什么变化,但它不再工作了。任何帮助,将不胜感激!
我在网站页面上设置 x-frame-options 但由于某些嵌套逻辑,在某些页面上我看到重复的值,例如:
X-FRAME-OPTIONS:SAMEORIGIN,SAMEORIGIN
Run Code Online (Sandbox Code Playgroud)
代替:
X-FRAME-OPTIONS:SAMEORIGIN
Run Code Online (Sandbox Code Playgroud)
是否可以将重复的值分配给 X-FRAME-OPTIONS,并且它会选择分配的第一个值并忽略其余值吗?
谢谢。
我阅读了有关配置/实现Content-Security-Policy标头的信息,并且遇到了两种实现方法:
请注意,这个问题是不能重复的这个,荫寻找一个更好的解决方案比在给定的这个链接
我看到(1)中的缺点是通过代码驱动的,而不是通过配置文件驱动的,选项(2)中的缺点是,如果我说有100个html文件,则需要在每个HTML中放入此标记吗?(如果我错了,请纠正我)我正在寻找的解决方案是可以在web.xml中配置的东西,并且适用于所有html文件。这是我们在web.xml中配置X-框架,选项的情况下做这样给出的方式在这里,我们不是已经在web.xml配置内容安全,政策的类似的方式?
问题:如果已经通过我们的单点登录提供商进行身份验证,则用户不得查看登录页面。
解决方案:iframe 和 javascript 会显示加载 gif,直到 iframe 从单点登录提供商返回响应之后。如果 SSO 提供商响应用户当前已登录,Django 将对用户服务器端进行身份验证,并且 JavaScript 将用户重定向到 Web 应用程序。如果 SSO 提供商响应用户未登录,则 javascript 会将加载 gif 替换为登录表单。
使用 Django==1.9.9、Python 2:
我们的get调用用 装饰@xframe_options_sameorigin,但最近有时开始返回此错误:
2016-09-25 16:38:27,598 | django.request | ERROR | Internal Server Error: /accounts/open-id-finish/
Traceback (most recent call last):
File "/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/virtualenv/local/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "/opt/virtualenv/local/lib/python2.7/site-packages/django/views/generic/base.py", line …Run Code Online (Sandbox Code Playgroud) 我想防止我的网站受到 clickJacking 攻击。在哪个文件中以及在何处设置 X-Frame-Options 以防止 clickJacking 攻击。
假设我的Web应用程序受到CSRF令牌的CSRF攻击保护,此外,它还使用SSL并受到XSS攻击防护.此外,出于此问题的目的,假设它仅用于最近的浏览器并且它们没有错误.我可以使用X-Frame-Options:Deny标头来防止基于帧的点击劫持,但是我没有看到它将提供什么额外的保护,因为任何基于帧的表单提交都缺少CSRF令牌.(并且同源策略阻止攻击者的JavaScript发现CSRF令牌.)问题:
还有其他一种不基于框架的点击劫持吗?(即,是一个X-Frame-Options:拒绝完全的点击劫持防御?)
在没有X-Frame-Options:Deny标头的情况下,根据上述假设,点击劫持攻击仍有可能成功吗?
(我问的不是因为我想阻止基于帧的点击劫持,因为我确实包含了X-Frame-Options:Deny头.相反,我试图理解点击劫持攻击的范围.)
我在另一个域上使用这样的简单页面测试clickjacking缓解:
<iframe src="https://my.domain/login"></iframe>
Run Code Online (Sandbox Code Playgroud)
我的登录页面发送以下标题:
HTTP/1.1 302 Found
X-Frame-Options: SAMEORIGIN
Location: https://my.domain/landing
...
Run Code Online (Sandbox Code Playgroud)
我很惊讶地看到IE 10和Chrome 33都遵循重定向并在我的内部显示我的登录页面<iframe>.我的登录页面没有发送X-Frame-Options,但我预计X-Frame-Options登录页面上的第一个页面会优先于重定向.当我的登录页面显示在框架中时,如何防止浏览器跟踪重定向?
我应该补充说,<iframe>如果登录页面没有发送HTTP重定向,那么事情按预期工作(空/阻止).
我们如何在Java应用程序中阻止帧注入?
就像在Penetration测试中一样,发现如果黑客起草了一个演示html页面,并且在该页面内他使用了iframe,它具有工作应用程序的URL,他/她可以通过该URL /请求查看数据(在iframe中创建).
假设这是黑客文件test.html:
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head><body>
<iframe id="inner" src="http://hostname:8080/Application_Name/ABC/DEF/SomePage.jsp?ABC=QWERTYL&XYZ=1&CDE=24" width="600" height="400" scrolling="yes">
</iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
现在,黑客能够检索应用程序中的数据.怎么阻止这个?
作为点击劫持的一部分,我们正尝试将 CSP 标头作为元标记添加到我们的 angular 项目中。下面是html
<!doctype html>
<html lang="en">
<head>
<meta http-equiv="Content-Security-Policy" content="frame-ancestors 'self'">
<meta charset="utf-8">
<title>QA Eval Webapp</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root></app-root>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是,当我们尝试将页面作为 iframe 加载时,它会加载。我们已经在谷歌浏览器中进行了测试。
为了解决这个问题,我们构建了 angular 项目,将 dist 下的文件移动到了一个 Web 应用程序,添加了一个过滤器以将 CSP 标头添加到每个请求的响应中。下面是代码
package com.web.beginner;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
@WebFilter(urlPatterns="/*", filterName = "cspfilter")
public class CSPFilter implements Filter {
@Override
public void destroy() …Run Code Online (Sandbox Code Playgroud) 我正在使用Django XFrameOptionsMiddleware来控制点击劫持,但我有一个客户需要能够从他们的网络中的iframe中浏览应用程序.我希望能够在view方法中应用(或删除)xframe_options_exempt装饰器.
我已经阅读了很多有关iframe和clickjacking的信息,但无法找到我想要的信息。您能帮我解决以下问题吗?
iframe点击劫持如何传播?我看过很多文章,提到在本地计算机上编辑html代码,同样,他们也可以通过添加一个不可见的按钮来劫持用户的点击。但是,这是用户本地计算机上的修改逻辑。我很想知道是否可以将相同的代码推送到云中并影响每个登录或使用该门户的用户?如果是,怎么办?
如果我在网站上启用了iframe选项,则存在安全风险,因为我的页面可以作为iframe加载到其他人的网站中,并且他们可能会滥用它。并且,如果有任何安全数据,如果最终用户不小心进入该网站,该数据将被黑客入侵。这是出于安全考虑,因此始终建议不要使用iframe,对吗?还有其他安全风险吗?
如果还有其他风险,请添加。
clickjacking ×11
iframe ×5
django ×3
security ×3
csrf ×1
embed ×1
html ×1
http-headers ×1
java ×1
jsp ×1
laravel ×1
python ×1
redirect ×1
tomcat ×1
websecurity ×1