(xss攻击)跨站脚本攻击是指在一个网站的环境中注入恶任意的 HTML (包括附带的 JavaScript )
flask预防了xss攻击:所有从后端传到前段的html代码和js代码默认是不让浏览器识别的
如果想让前段识别html或者是js代码可以使用 Markup 方法,代码写在这个函数里面
发送上传的 HTML ,永远不要这么做,使用 Content-Disposition: attachment 头部来避免这个问题。
虽然 Jinja2 可以通过转义 HTML 来保护你免受 XSS 问题,但是仍无法避免一种情况:属性注入的 XSS 。为了免受这 种攻击,必须确保在属性中使用 Jinja 表达式时,始终用单引号或双引号包裹:
例子
这样做的目的是什么?
这样做的目的是方式攻击者使用html+js代码进行对网站的攻击
有一类 XSS 问题 Jinja 的转义无法阻止。 a 标记的 href 属性可以包含 一个 javascript: URI 。如果没有正确保护,那么当点击它时浏览器将执行其代 码。
例子
"""
click here
click here
"""
攻击演示案例
html中的代码
"""
.py文件中的代码
@app.route(‘/‘, methods=[‘GET‘])
def index():
return render_template(‘index.html‘)
为了防止发生这种问题,需要设置 Content Security Policy (CSP) 响应头部。
告诉浏览器哪里可以加载各种资源。这个头部应当尽可能使用,但是需要为网站定义 正确的政策。一个非常严格的政策是:
response.headers[‘Content-Security-Policy‘] = "default-src ‘self‘"
告诉浏览器把所有 HTTP 请求转化为 HTTPS ,以防止 man-in-the-middle (MITM) 攻击。
response.headers[‘Strict-Transport-Security‘] = ‘max-age=31536000; includeSubDomains‘
跨站请求伪造( CSRF )
那么如何预防这个问题呢?基本思路是:对于每个要求修改服务器内容的请求,应该 使用一次性令牌,并存储在 cookie 里, 并且 在发送表单数据的同时附上它。 在服务器再次接收数据之后,需要比较两个令牌,并确保它们相等。
这个预防测试flask没有做
json安全
小伙伴们这个比较复杂,等整理好了马上分享 谢谢大家的分享点赞