Categories: Flask 中文教程

Flask 跨站请求伪造(CSRF)

另一个大问题是 CSRF 。这是一个非常复杂的话题,我不会在此详细介绍,而只会
提及 CSRF 是什么和理论上如何避免它。

如果你的验证信息存储在 cookie 中,你有隐式的状态管理。“已登入”状态由一个
cookie 控制,并且这个 cookie 在每个页面的请求中都会发送。不幸的是,在第三
方站点触发的请求中也会发送这个 cookie 。如果你不注意这点,一些人可能会通过
社会工程学来诱导你应用的用户在他们不知道的情况下做一些蠢事。

比如你有一个指定的 URL ,当你发送 POST 请求时会删除一个用户的资料(比如
http://example.com/user/delete 。如果一个攻击者现在创造一个页面来用
JavaScript 发送这个 post 请求,他们只是诱骗一些用户加载那个页面,而他们
的资料最终会被删除。

想象你在运行 Facebook ,有数以百万计的并发用户,并且某人放出一些小猫图片
的链接。当用户访问那个页面欣赏毛茸茸的猫的图片时,他们的资料就被删除。

你怎样才能阻止这呢?基本上,对于每个修改服务器上内容的请求,你应该使用
一次性令牌,并存储在 cookie 里, 并且 在发送表单数据的同时附上它。
在服务器再次接收数据之后,你要比较两个令牌,并确保它们相等。

为什么 Flask 没有为你这么做?理想情况下,这应该是表单验证框架做的事,而
Flask 中并不存在表单验证。

冒牌SEO

前端开发者,欢迎大家一起沟通和交流。

Share
Published by
冒牌SEO

Recent Posts

vue:页面注入js修改input值

一般会直接这样写: let z…

5 小时 ago

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago