2012-07-24 139 views
0

我被困在这个问题上。 这个想法是允许用户通过局域网或本地网络访问我的网站,以跳过登录页面并以具有特殊权限的匿名用户访问网站。 (我使用apache2和mod_wsgi运行Ubuntu服务器)。有谁知道是否有方法让apache确定用户是否通过LAN访问网站?我愿意接受所有建议,因为我目前不知道如何解决这个问题。用户通过局域网访问网站的权限(Django)

谢谢。

回答

0

最简单的方法是查看远程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并等待不好的事情发生。

+0

是的,就像那样,或者只是拒绝从apache或os级别访问。 – slackjake 2012-07-24 19:55:59

+0

这将工作,我会保持这个开放,并尝试考虑一个更安全的方式来做到这一点,因为安全是这个网站的问题。我想知道在会话期间创建临时用户是否可以解决共享用户的安全问题? – karkle 2012-07-24 20:14:46

+0

另外我正在考虑在服务器上制作不同的虚拟主机。一个用于在不同端口上运行的所有公共访问,DNS服务器可以将该网站重新路由到另一个端口,另一个用于端口80上运行的其他端口。运行在端口80上的非公共虚拟主机可以通过wsgi告诉网站将变量传递到网站用户在某种程度上在局域网上? – karkle 2012-07-24 20:19:04