分享一些关于网站安全的知识点

(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中的代码

"""

Title 点击 """

.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安全
小伙伴们这个比较复杂,等整理好了马上分享 谢谢大家的分享点赞

原文地址:https://www.cnblogs.com/happyyou123/p/14682555.html