美文网首页
Python+Django框架学习(CSRF校验、静态文件、中间

Python+Django框架学习(CSRF校验、静态文件、中间

作者: 彬_哥哥 | 来源:发表于2024-05-28 15:41 被阅读0次
CSRF校验和处理

CSRF(Cross-siterequestforgery,跨站请求伪造),也被称为one-click attack或者session riding,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
Django防止csrf的方式:
默认打开csrf中间件
表单post提交数据时加上{%csrf_token%}标签(通过效验)
防御原理
渲染模板文件时在页面生成一个csrfmiddlewaretoken的隐藏域
服务器交给浏览器保存一个名字为csrftoken的cookie信息
提交表单时,两个值都会发给服务器,服务器进行对比,如果一样,则csrf验证通过,否则失败
注意:当启用中间件并加入标签csrf_token后,会向客户端浏览器中写入一条cookie信息,这条信息的值与隐藏域input元素的value属性是一致的,提交到服务器后会先由csrf中间件进行验证,如果对比失败则返回403页面,而不会进行后续的处理

静态文件使用

-修改项目目录中的配置文件settings.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    BASE_DIR/'static'
]
Django中间件
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',  # 安全中间件
    'django.contrib.sessions.middleware.SessionMiddleware',  # 会话中间件,处理session
    'django.middleware.common.CommonMiddleware',  # 站点中间件,处理是否带斜杠的
    'django.middleware.csrf.CsrfViewMiddleware',  # CSRF保护中间件,跨站请求伪造的处理
    'django.contrib.auth.middleware.AuthenticationMiddleware',  # 认证中间件,提供用户认证服务
    'django.contrib.messages.middleware.MessageMiddleware',  # 消息中间件,基于cookie或者会话的消息功能
    'django.middleware.clickjacking.XFrameOptionsMiddleware',  # X-Frame-Options中间件,点击劫持保护]
自带认证方式登录
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout  #用户名有效性验证 登入和登出
 
from django.contrib.auth.decorators import login_required  # 验证用户是否登录
 
def acc_login(request):
    if request.method == "POST":
        username = request.POST.get("username")
        password = request.POST.get("password")
        user = authenticate(username=username,password=password) # 验证用户名的有效性
        if user:
            login(request,user)  # 验证成功之后登录
            return  redirect('/test')
       return render(request, "login.html")
 
def acc_logout(request):
    logout(request)  # 登出
    return redirect("/login")
  

@login_required  # 加上这个装饰器就是限制必须登录才能执行这个函数,记得再项目中配置文件settings.py追加一下内容LOGIN_URL = '/login/'
def dashboard(request):
    print(request.user)
    return render(request, "template/test1/list.html")

相关文章

网友评论

      本文标题:Python+Django框架学习(CSRF校验、静态文件、中间

      本文链接:https://www.haomeiwen.com/subject/jyuqqjtx.html