Django框架的CSRF跨站请求伪造个人理解


前言

分享Python学习过程中个人知识点的理解。

一、CSRF跨站请求伪造是什么?

含义:攻击者盗用了你的身份,以你的名义发送恶意请求。

理解:正常网站发送POST请求时会把网站自身相关cookie数据一并发送,攻击者正是通过获取该网站的cookie数据,伪造用户身份发送恶意请求。

图例:

Django框架的CSRF跨站请求伪造个人理解

二、如何解决CSRF跨站请求伪造?

        在前端表单增加隐藏的csrf_token字段,该字段的数据来源view.py文件"from django.middleware.csrf import get_token"里get_token生成的数据,生成的数据同时也写入cookie,在接收请求POST时,判断表单的csrf_token与cookie里的csrf_token是否一致,如果一致则视为正常的请求;如果不一致,代表的是跨站请求伪造。

Django框架的CSRF跨站请求伪造个人理解
Django框架的CSRF跨站请求伪造个人理解

Django框架的CSRF跨站请求伪造个人理解

三、重点注意

当模版引擎为Django时,可在前端HTML模版中使用{% csrf_token %} 或者 <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
当模版引擎为Jinja2时,只能使用 <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">