Flask 防御 CSRF 攻击
发布时间:2023-07-01 14:59:00 所属栏目:教程 来源:
导读:在 Flask 中防御 CSRF 攻击的最常见方法是基于校验 Token 检测 CSRF 攻击,它的基本思想如下:
在服务端生成一个随机的、不可预测的字符串,该字符串称为 CSRF Token;
客户获取安全相关的页面时,服务端将 CSRF
在服务端生成一个随机的、不可预测的字符串,该字符串称为 CSRF Token;
客户获取安全相关的页面时,服务端将 CSRF
在 Flask 中防御 CSRF 攻击的最常见方法是基于校验 Token 检测 CSRF 攻击,它的基本思想如下: 在服务端生成一个随机的、不可预测的字符串,该字符串称为 CSRF Token; 客户获取安全相关的页面时,服务端将 CSRF Token 作为隐藏字段发送给客户端; 客户端提出请求时,将页面的中的隐藏字段一并发送给服务端; 服务端处理请求时,提取请求中的 CSRF Token,与服务端生成的 CSRF Token 进行比对,如果相同则请求是合法的,如果不相同则请求是 CSRF 攻击。 因为 CSRF Token 的值是随机的、不可预测的,攻击者无法构造一个带有合法 CSRF Token 的请求实施 CSRF 攻击,从而阻断了 CSRF 攻击。 1. 登录 用户输入账户名和密码登录。 2. 验证通过 账户名和密码匹配,则验证通过。 3. 生成 CSRF Token 用户验证通过后,服务端生成一个随机的、不可预测的字符串 CSRF Token,并将它存储在 Session 中。 4. 访问转账页面 用户访问转账页面。 5. 返回转账页面 服务端返回转账页面的 HTML,将存储在 Session 中的 CSRF Token 作为隐藏字段返回给客户端。例如,服务端返回的转账页面可能如下: <form action="/transfer" method="POST"> <input type="hidden" name="csrftoken" value="IZiglWi1k2e3z!m@z$"> <input type="text" name="name" placeholder="接收用户" /> <input type="text" name="amount" placeholder="转账数量" /> <input type="submit" name="submit" value="转账"> </form> 在第 2 行,名称为 csrftoken 的隐藏字段包含了 CSRF Token 的值,字符串 “IZiglWi1k2e3z!m@z$” 是随机的、无法被猜测的,即攻击者无法获取 CSRF Token、无法构造一个合法的转账请求。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |