如何从我的WebServer阻止特定区域

时间:2013-06-09 04:19:20

标签: java jsp servlets ip-address trace

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

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

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

2 个答案:

答案 0 :(得分:0)

您可以使用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...
    }
}

答案 1 :(得分:0)

我可以给你两个链接。通过分析ip来识别国家名称,然后阻止它进行Web过滤的人。

  1. 从ip确定国家/地区的方法:link
  2. 另一个stackoverflow帖子中提供的Web过滤器类:link