- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 CSP 的新手。我试图通过设置 resp_header 来保护我的网站免受跨站点脚本攻击,从而在我的 Flask 应用程序中的所有模板中实现 CSP。我修改了我的渲染模板:
return render_template('addvideos.html` form=form, legend = 'Update video : '+ videos.video_name)
到
resp = make_response(render_template('addvideos.html', legend = 'Update video : '+ videos.video_name)
)
resp.headers['Content-Security-Policy'] = "default-src 'self';"
return resp
我在应用程序中有 50 多个“render_template”,我必须为每个添加响应 header 。经过研究,我发现 after_request 会执行如下所示的技巧:
@app.after_request
def add_security_headers(resp):
resp.headers['Content-Security-Policy']='default-src \'self\''
return resp
这很可靠吗?如果我直接在 HTML 模板 ( jinja2 ) 中应用 CSP 会怎样,这可能吗?哪个更可靠?任何好的建议都会受到欢迎。谢谢
最佳答案
is this very reliable ?
app.after_request
中设置该标题装饰器将 header 应用于该
app
服务的所有路由.
What if I apply the CSP directly in the HTML template ( jinja2 ), is that possible?
Which is more reliable ?
app.after_request
装饰器)有效,但它通常可以由 Python 应用程序服务器所在的反向代理处理。如果不熟悉,请查看
the deployment docs .
server
中。堵塞:
add_header Content-Security-Policy "default-src 'self';";
或者,无论响应代码如何都发送 header :
add_header Content-Security-Policy "default-src 'self';" always;
This blog关于是否让反向代理处理发送此 header ,或在您的 Flask 应用程序中定义它有一些很好的建议:
Should I add a CSP header with nginx or my in application?While it is certainly easy to add a CSP header with nginx, it also possible to add a
Content-Security-Policy
header with your server side programming language ([Flask]). There are tradeoffs to doing it either way. If you have sections of your application that may require a different CSP policy then it might be easier to use your application programming language instead. Or if you plan to use features such as a CSP nonce, then it is much easier to set theContent-Security-Policy
from your application code instead of from nginx.
关于Flask CSP ( Content-Security-Policy ) 针对跨站脚本等攻击的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63290047/
我有一个站点是在 asp.net 中完成的。另一个较新的站点是在 asp.net MVC、LINQ 和 Razor 中完成的。 当我访问旧站点 oldsite/default?userid=243 时
我想提供一段 Javascript 代码,它可以在包含它的任何网站上运行,但它总是需要在托管 Javascript 的服务器上获取更多数据(甚至修改数据)。我知道出于显而易见的原因存在安全限制。 考虑
我是一名优秀的程序员,十分优秀!