我使用 JSP 和 servlet 制作了一个 CMS 应用程序。我没有使用任何类型的框架。 CMS 有两个部分:
- 前端
- 管理员(后端)
例如,如果我将它托管在 www.example.com
上,那么我所有的前端站点都会显示给所有用户。
但是 www.example.com/admin
必须可以从几个 IP 地址访问。并非来自所有用户。
我找到了这些链接:
链接 1 看起来有点困惑,链接 2 看起来不错,但我没有使用 JBoss。
在 Stack Overflow 链接中,他们没有提到如何使用它。
最佳答案
据我从您的问题中了解到,您使用 Apache Tomcat
作为 Web 服务器。在那种情况下使用 Remote Address Filter通过 IP 地址限制访问。它允许将请求客户端的 IP 与正则表达式进行比较,以根据比较结果允许或阻止请求。
如果您使用 Tomcat 7你需要使用类 RemoteAddrFilter并在应用的配置文件web.xml
中定义必要IP的正则表达式:
<filter>
<filter-name>Remote Address Filter</filter-name>
<filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
<init-param>
<param-name>allow</param-name> <!-- or deny -->
<param-value>10\.10\.1[12]\..*</param-value> <!-- regexp for your ip adress -->
</init-param>
</filter>
<filter-mapping>
<filter-name>Remote Address Filter</filter-name>
<url-pattern>*/admin</url-pattern> <!-- the url of your admin page -->
</filter-mapping>
您可以使用硬编码的特定 IP 地址或正则表达式模式。但在某些情况下,正则表达式在地址验证方面为您提供了很大的灵 active 。
如果你使用 6或 5您需要使用类的 Tomcat 版本 RemoteAddrValve并在 Tomcat 的配置文件 server.xml
中定义以下行:
<Valve className=”org.apache.catalina.valves.RemoteAddrValve” allow=”10\.10\.1[12]\..*”/>
或
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
deny="86.57.158.37, 213.117.195.*, 124.86.42.*" />
关于 using request filter valves 的更多信息.
关于 securing the administrative web apps with Tomcat 的有趣文章.
顺便说一句,不拒绝来自 localhost
的测试请求很方便。因此,将 127\.0\.0\.1
添加到您允许的 IP 地址范围是有意义的。
但不要忘记,在某些情况下,可以使用代理服务器来绕过 IP block 。还应用登录身份验证以获得更好的安全性。
关于jsp - 仅允许特定 IP 地址访问 JSP 文件/文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12026794/