用户通过局域网(Django)访问网站的权限

用户通过局域网(Django)访问网站的权限,django,apache,apache2,mod-wsgi,Django,Apache,Apache2,Mod Wsgi,我被这个问题困住了。 其想法是允许通过局域网或本地网络访问我的网站的用户跳过登录页面,以具有特殊权限的匿名用户身份访问网站。(我正在运行一个带有apache2和mod_wsgi的ubuntu服务器)。有人知道apache是否有办法确定用户是否通过LAN访问网站吗?我愿意接受所有建议,因为我目前不知道如何解决这个问题 谢谢。最简单的方法就是查看远程IP。如果它在你的局域网子网中,那么你知道它们是本地的。然而,通常的免责声明和所有声明:虽然远程地址在很大程度上是安全的,但在某些情况下可能会被欺骗。它

我被这个问题困住了。 其想法是允许通过局域网或本地网络访问我的网站的用户跳过登录页面,以具有特殊权限的匿名用户身份访问网站。(我正在运行一个带有apache2和mod_wsgi的ubuntu服务器)。有人知道apache是否有办法确定用户是否通过LAN访问网站吗?我愿意接受所有建议,因为我目前不知道如何解决这个问题


谢谢。

最简单的方法就是查看远程IP。如果它在你的局域网子网中,那么你知道它们是本地的。然而,通常的免责声明和所有声明:虽然远程地址在很大程度上是安全的,但在某些情况下可能会被欺骗。它需要访问ISP或类似的服务(只有当你试图渗透银行并用足够的钱躲藏在某个偏僻的岛屿度假胜地度过余生时,这种程度的黑客攻击才是值得的),或者访问本地网络本身,因此在这两种情况下都有点异想天开,但安全的黄金法则是“做最坏的打算,抱最好的希望”。任何入侵场景通常都是太高的代价,无法为缺乏安全性带来的任何微小便利付出代价

这就是说,我将把这视为一个教育练习。您仍然需要至少一个用户,可以在所有本地网络用户之间共享(顺便说一句,这是另一个红旗)。您将检查IP地址,确定它是否在您的子网中,如果是,请使用存储的凭据登录共享用户(又是一个响亮的红色安全旗)


然后,只需将其添加到
中间件类
中,然后等待不好的事情发生。

是的,类似的事情,或者只是拒绝从apache或os级别访问。这会起作用的,我会保持打开状态,并尝试想出一种更安全的方法来实现这一点,因为安全性是这个网站的一个问题。我想知道是否为dur创建一个临时用户对他们的会话进行初始化可能会解决共享用户的安全问题?我还考虑在服务器上创建不同的虚拟主机。一个用于运行在DNS服务器可以将网站重新路由到的不同端口上的所有公共访问,另一个运行在端口80上。运行在端口80上的非公共虚拟主机可以通过通过wsgi进入网站,告诉网站用户不知何故在局域网上?你仍然需要一种方法来验证他们,但是只允许在特定的域或端口下访问,或者只能通过本地intranet访问,这是锁定它的一个很好的步骤。在这种情况下,你只需检查端口或域即可然后,您的网络防火墙将负责限制对其中任何一个的访问。
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)