Django框架的CSRF跨站请求伪造个人理解
前言
分享Python学习过程中个人知识点的理解。
一、CSRF跨站请求伪造是什么?
含义:攻击者盗用了你的身份,以你的名义发送恶意请求。
理解:正常网站发送POST请求时会把网站自身相关cookie数据一并发送,攻击者正是通过获取该网站的cookie数据,伪造用户身份发送恶意请求。
图例:
二、如何解决CSRF跨站请求伪造?
在前端表单增加隐藏的csrf_token字段,该字段的数据来源view.py文件"from django.middleware.csrf import get_token"里get_token生成的数据,生成的数据同时也写入cookie,在接收请求POST时,判断表单的csrf_token与cookie里的csrf_token是否一致,如果一致则视为正常的请求;如果不一致,代表的是跨站请求伪造。
三、重点注意
当模版引擎为Django时,可在前端HTML模版中使用{% csrf_token %}
或者 <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
当模版引擎为Jinja2时,只能使用 <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">