【问题标题】:How to Block Particular Areas from my WebServer如何从我的 WebServer 中阻止特定区域
【发布时间】:2013-06-05 01:48:30
【问题描述】:

我正在使用 Glassfish 网络服务器来运行我的网站。我仍在开发该网站,我想追踪人们尝试使用该网站的位置。特别是,我希望能够阻止整个非洲和中东地区访问我的网站,以防止欺诈。我还想知道某人的位置,以便向他们展示与他们在网站上的位置相关的内容。例如,如果用户从德克萨斯州达拉斯访问该网站,他会看到德克萨斯州达拉斯的内容。

我正在使用 jsp/Java,并且更喜欢这样的解决方案。

我猜这是通过某种方式将 IP 地址追踪到某个位置来完成的。

【问题讨论】:

  • 这听起来像是一种特别糟糕的防止欺诈的方法。也许你应该考虑其他的,也许少一点种族主义。

标签: java jsp servlets ip-address trace


【解决方案1】:

您可以使用 JavaScript 中的 this Geo API 来检测用户来自哪里,并使用 window.load 处理重定向。我认为这不是正确的方法,因为用户可以在他们的浏览器中阻止 JavaScript 执行。

另一方面,您可以使用MaxMind IP GeoLocation database 并使用一些业务逻辑使用Servlet-Filter 和方法ServletRequest#getRemoteAddr() 来检测IP 地址:

@WebFilter("/*")
public class IPFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
        throws IOException, ServletException {
        String clientIp = req.getRemoteAddr();
        if (bannedIp(clientIp) {
            response.sendRedirect(request.getContextPath() + "/bannedIp.jsp");
            return;
        }
        chain.doFilter(req, res);
    }
    private boolean bannedIp(String clientIp) {
        //add logic that detects if IP comes from a banned location...
    }
}

【讨论】:

    【解决方案2】:

    我可以给你两个链接。一种通过分析ip识别国家名称,然后阻止它的网络过滤。

    1. 从ip判断国家的方法:link
    2. 另一个 stackoverflow 帖子中给出的 Web 过滤器类:link

    【讨论】:

    • 您的最后一个链接是 Tomcat 特定的。您也应该在答案中添加这个(因为可能不适用于 GlassFish 或 WebLogic)。
    猜你喜欢
    • 2015-06-25
    • 2011-10-03
    • 2022-06-16
    • 1970-01-01
    • 2022-11-11
    • 2018-12-13
    • 2015-10-17
    • 1970-01-01
    • 2017-02-14
    相关资源
    最近更新 更多