jsp - 仅允许特定 IP 地址访问 JSP 文件/文件夹

标签 jsp tomcat servlets ip

我使用 JSP 和 servlet 制作了一个 CMS 应用程序。我没有使用任何类型的框架。 CMS 有两个部分:

  1. 前端
  2. 管理员(后端)

例如,如果我将它托管在 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 。

如果你使用 65您需要使用类的 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/

相关文章:

javascript - 3 次登录尝试失败时禁用文本框

java - Spring、Tomcat7中的全局异常处理

java - 如何监听 servlet 请求范围内的所有错误?

java - Eclipse Servlet 需要很长时间才能更新

java - 登录尝试 Servlet - 如果用户 3 次登录尝试全部失败,则禁用用户 10 分钟

java - 我无法在jsp页面中包含css文件

javascript - 如何将javascript变量传递给jsp参数值

spring - Tomcat 或 Spring Suite Tool 的默认服务器不在 Simple Spring Web Maven 项目中运行

tomcat - 使用 pem 文件在 tomcat 上启用 SSL

java - Servlet 3 网络片段 - 不提供 META-INF 文件夹中的静态内容