如何限制对我不能仅通过其他引用者应用程序控制的应用程序的访问?

时间:2014-01-08 11:02:54

标签: apache security nginx webserver http-referer

我们的客户有一套(5-6)内部网/互联网应用程序,可以是自定义开发的,也可以是3d-party,位于各种Web服务器中,我们无法修改的应用程序 / control。

我们开发了一个门户网站应用程序(A),客户希望只通过A 访问其所有其他应用程序(B),这意味着如果用户直接输入B的应用程序URL ,他得到一个错误页面,告知只允许通过A访问。因此,用户必须登录到应用程序A,然后单击指向应用程序B的链接才能访问它。出于安全原因要求此要求,并将A作为访问网关提供给其他应用程序(B)。

这是可能的,我们如何实现它?我们是否应该使用另一个 Web服务器作为代理到所有其他应用程序(B),还是有更好的解决方案?如果我们使用其他网络服务器作为代理,我们应该使用用户ID - 令牌方法结合相应的会话Cookie 来实施引荐来源逻辑,以便应用B的网址不能被黑客攻击并且每个用户和会话都是唯一的?

很抱歉,如果我不明确地或以错误的方式陈述我的问题,但我不熟悉网络/系统管理和网络服务器。我可以根据需要提供更多细节。

2 个答案:

答案 0 :(得分:2)

这里有不同的方法:
1.使用防火墙设置仅从A IP地址访问B http {s}端口 2.在httpd.conf中为aps B目录设置目录限制,如:

<Directory "/var/www/B">
   AllowOverride None
   Order allow,deny
   Allow from <IP of A>
</Directory>

在APS中创建一个链接(http://ip_A/accesstoB/somepath/script.php),它将使用.htaccess规则代理到B:

RewriteRule ^accesstoB/(.*)$ http://<ip_B>/$1 [P]
在此示例中

:访问http://ip_A/accesstoB/somepath/script.php链接的客户将代理到http://ip_B/somepath/script.php

答案 1 :(得分:1)

  1. 您首先使用网络服务器配置文件或基于IP的防火墙限制限制对B应用程序的访问
  2. 然后您将所有这些请求重定向到您要开发的新包装器应用程序。
  3. 使用此包装器应用程序,您可以执行任何您喜欢的身份验证,然后您的包装器应用程序执行http / https请求(通过libcurl等)和回应响应。