Как заблокировать отдельные области с моего веб-сервера
Я использую веб-сервер Glassfish для запуска своего веб-сайта. Я все еще разрабатываю веб-сайт, и я хотел бы проследить место, откуда люди пытаются использовать веб-сайт. В частности, я хотел бы иметь возможность блокировать доступ всей Африки и Ближнего Востока к моему веб-сайту в попытке предотвратить мошенничество. Кроме того, я хотел бы узнать чье-либо местоположение, чтобы показать им связанный контент с их местоположением на веб-сайте. Например, если пользователь заходит на сайт из Далласа, штат Техас, он увидит контент из Далласа, штат Техас.
Я использую JSP /Java и предпочел бы такое решение.
Я полагаю, что это делается путем отслеживания IP-адреса в определенном месте.
2 ответа
Я могу дать вам две ссылки. Тот, который определил бы название страны путем анализа ip, а затем заблокировал бы его веб-фильтрацию.
Вы можете использовать этот Geo API из JavaScript, чтобы определить, откуда пришел пользователь, и обработать перенаправление, используя window.load
, Я не считаю это правильным подходом, поскольку пользователи могут блокировать выполнение JavaScript в своих браузерах.
С другой стороны, вы можете использовать базу данных MaxMind IP GeoLocation и использовать некоторую бизнес-логику для определения адресов IP с помощью Servlet-Filter и метода. ServletRequest#getRemoteAddr()
:
@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...
}
}