每天努力一点点,坚持下去 ------ 博客首页

CSRF概念及Django中CSRF报错解决

百度百科解释:

跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

 在使用Python+Django+html中的from表单写接口请求时,遇到了如上图的报错,那么是什么原因导致的呢?

  • 因from表单请求会出现重复点击的情况,就会导致重复的提交,Django为了解决此问题,每次点击时,默认会生成一段字符串来进行识别,而在我们没有生成这段字符串就会报如上图的错;在Django说白了,就是每次请求会产生一个字符串,来防止重复提交。

 我们可以看到Django中的setting.py中默认是配置CSRF。

 如何解决CSRF的报错问题?

  • 方法1:我们:把setting.py中有关CSRF的默认配置注释,便不会在校验
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
  •  方法2:如下图,告知需要在template中的模板配置一个{% csrf_token %}

 步骤:

 


 

posted @ 2023-03-05 21:18  他还在坚持嘛  阅读(117)  评论(0编辑  收藏  举报