如果用户的 IP 与他登录时使用的 IP 不同,如何配置或修改身份验证以禁止用户会话?我真的尽我所能保护我的 Django 站点免受 XSS 攻击。但我永远不能确定我涵盖了所有的基础。如果最坏的情况发生并且有人能够在我的网站中放置一些 XSS,至少这可以防止他劫持现有的用户会话。
1699 次
2 回答
3
使用以下内容确保您获得的是访问者的真实 IP 地址,而不是代理或负载均衡器的真实 IP 地址。(以防万一您的服务器落后)
# on login:
request.session['logged_ip'] = request.META.get('HTTP_X_FORWARDED_FOR',
request.META.get('HTTP_X_REAL_IP',
request.META.get('REMOTE_ADDR', '1.2.3.4')))
# on each request
if (request.META.get('HTTP_X_FORWARDED_FOR',
request.META.get('HTTP_X_REAL_IP',
request.META.get('REMOTE_ADDR', '1.2.3.4'))) != request.session['logged_ip'])
# don't allow
于 2013-01-17T01:08:22.870 回答
1
在您的用户模型类中创建一个 IP 字段来存储请求的 IP 地址。
original_ip_address = request.META['REMOTE_ADDR']
然后在提供视图之前,只需使用存储的 ip 检查当前请求:
if request.META['REMOTE_ADDR'] == ip_from_database: `
# Do something
else:
#redirect to login
您可以使上述函数始终在视图中的任何其他内容之前调用。
于 2010-07-31T21:09:45.813 回答