Cool_Breeze 发表于 2021-11-27 18:30

django session会话验证身份 被 python requests库轻松绕过???

django 登录验证视图
def login_view(request):
   
    user = None
    if request.method == "GET":
      # 漏洞
      print(request.session['username'])
      if request.session.get('username') and request.session.get('userid'):
            return HttpResponse("已经登录")

      return render(request, "user/login.html")
    elif request.method == "POST":
      username = request.POST.get('username', None)
      password = request.POST.get('password', None)
      
      try:
            user = User.objects.get(username=username)
      except Exception as err:
            print(f'--login user err:{err}')
            return HttpResponse('用户名或者密码不匹配')
      m = hashlib.md5()
      m.update(password.encode())
      if user.password == m.hexdigest():
            request.session['username'] = username
            request.session['userid'] = user.id
      else:
            return HttpResponse('用户名或者密码不匹配')
      
      resp = HttpResponse('登录成功')
      if 'remember' in request.POST:
            resp.set_cookie('username', username, 60*60*24*3)
            resp.set_cookie('userid', user.id, 60*60*24*3)
      
      return resp

python requests 库获取session 值后,轻松突破这个验证!!!代码如下:
data = {"sessionid" : "ontpw9i4q6wh361b2lksm3lcz6hix92q"}
res = requests.get('http://127.0.0.1:8008/user/login', cookies = data)

print(res.content.decode())
print(res.cookies)

求大佬讲讲可靠方法!

Cool_Breeze 发表于 2021-11-27 18:31

还是我打开方式错了,还是理解错了。新手学 web

Cool_Breeze 发表于 2021-11-27 18:38

难道网站就这样轻易被爬了吗?

带色的小马甲 发表于 2021-11-27 22:07

这样写session就是唯一的身份标识,带session访问肯定要显示登陆成功才正常,不明白你想问的是什么?
如果是为了防止非法爬虫,可以设置session的到期时间,写一个限制访问频率的中间件

萋小磊 发表于 2021-11-27 22:59

如果事jwt 也一样有这个问题
你还可以对 Session Create IP 判断.

Cool_Breeze 发表于 2021-11-28 09:06

带色的小马甲 发表于 2021-11-27 22:07
这样写session就是唯一的身份标识,带session访问肯定要显示登陆成功才正常,不明白你想问的是什么?
如果 ...

明白了。感谢

Cool_Breeze 发表于 2021-11-28 09:11

萋小磊 发表于 2021-11-27 22:59
如果事jwt 也一样有这个问题
你还可以对 Session Create IP 判断.

谢谢,这个方法也挺好的,

yang1 发表于 2021-11-28 10:02

这方法可以啊

tutu75738 发表于 2021-11-28 22:49

明白了,感谢分享

wadedong 发表于 2021-11-29 11:49

如果Session 是长期有效那 确实是有这个问题 。
页: [1]
查看完整版本: django session会话验证身份 被 python requests库轻松绕过???