学堂 学堂 学堂公众号手机端

csrf

lewis 1年前 (2024-04-15) 阅读数 16 #技术
描述​​#​​

CSRF利用用户正常登录产生的cookie,利用钓鱼网站传给用户发送一张有内容的表单,并携带用户的正常cookies访问网站,达到将伪造的表单通过用户之手传到网站上的目的。为了避免用户提交其他网站生成的表单,网站在用户登录时签发给用户一个csrftoken,该token不存放在cookie中(存放在浏览器的local storage中),由网站前端js调用(识别​​{{form.field_name}}​​),在提交表单时需要携带该token从而验证该表单来自于本网站(服务器端的token验证数据存放在session中)。

CSRF攻击攻击原理及过程​​#​​ 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行

同源策略:

现在有一个网站:http://www.a.com/a。 https://www.a.com/a :不同源,协议不同,此处协议是https! http://www.b.com/a :不同源,域名不同 http://www.a.com:8080/a :不同源,端口不同 http://www.a.com/b :同源 综上,跨域就是请求路径的url不同源。


Local / session storage 不会跨域工作,请使用一个标记 cookie:基于浏览器的同源策略,
现在有一个网站:http://www.a.com/a。

https://www.a.com/a :不同源,协议不同,此处协议是https!

http://www.b.com/a :不同源,域名不同

http://www.a.com:8080/a :不同源,端口不同

http://www.a.com/b :同源

综上,跨域就是请求路径的url不同源。

鉴权模型设计

django csrf setting 开启:

视图,csrf拦截和auth鉴权设计:



版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门