1

如果用户的 IP 与他登录时使用的 IP 不同,如何配置或修改身份验证以禁止用户会话?我真的尽我所能保护我的 Django 站点免受 XSS 攻击。但我永远不能确定我涵盖了所有的基础。如果最坏的情况发生并且有人能够在我的网站中放置一些 XSS,至少这可以防止他劫持现有的用户会话。

4

2 回答 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 回答