我被困在这个问题上。想法是允许通过局域网或本地网络访问我的网站的用户跳过登录页面并以具有特殊权限的匿名用户身份访问该网站。(我正在运行一个带有 apache2 和 mod_wsgi 的 ubuntu 服务器)。有谁知道 apache 是否有办法确定用户是否通过 LAN 访问该网站?我对所有建议持开放态度,因为我目前不知道如何解决这个问题。
谢谢。
最简单的方法是只查看远程 IP。如果它在您的 LAN 子网中,那么您就知道它们是本地的。但是,通常的免责声明和所有内容:虽然 REMOTE_ADDR在大多数情况下可以安全使用,但在某些情况下可能会被欺骗。它需要访问 ISP 或类似的服务(只有当您试图侵入银行并获得足够的钱以在您的余生中躲在某个僻静的岛屿度假胜地时,才值得进行黑客攻击),或访问本地网络本身,所以在任何一种情况下都有点幻想,但安全的黄金法则是“做最坏的打算,抱最好的希望”。任何入侵场景通常都是太高的代价,无法为缺乏安全性给您带来的任何小便利付出代价。
也就是说,我会将其视为一种教育练习。您仍然需要至少一个用户,该用户可以简单地在所有本地网络用户之间共享(顺便说一下,另一个 honkin 大红色安全标志)。您将检查 IP 地址,确定它是否在您的子网中,如果是,则使用存储的凭据登录共享用户(又一个 honkin' 大红色安全标志)。
from django.contrib.auth import authenticate, login
class PleaseHackMeMiddleware(object):
def process_request(self, request):
if re.search(r'^192.168.1', request.META['REMOTE_ADDR']):
user = authenticate('shared_username', 'shared_password')
if user:
login(request, user)
然后,只需将其添加到MIDDLEWARE_CLASSES
并等待坏事发生。