Как ограничить доступ к моей веб-странице - PullRequest
1 голос
/ 18 ноября 2011

У меня есть URL-адрес страницы поиска (например, http://x.y.z/search?initialQuery=test). Это не конечная точка веб-службы, а просто базовый URL-адрес (который проходит через контроллер Spring). Безопасность доступа к странице отсутствует, вы можете ввести ссылку в браузере, и она будет отображать результаты.

Я хочу найти способ запретить другим сайтам отправлять запросы на этот URL, если они специально не разрешены.

Я создаю фильтр, который перехватывает все запросы к этой странице, и выполняет некоторую проверку. Если проверка не удалась, они будут перенаправлены на другую страницу.

Проблема в том, какую проверку выполнить ... Я попытался использовать поле referer, чтобы проверить, поступил ли запрос с «разрешенного» сайта, но я знаю, что поле referer не всегда заполняется и может быть легко подделано.

Есть ли способ достичь этого?

У нас также есть IHS, так что если есть что-то, что может быть сделано, либо это было бы замечательно.

Ответы [ 5 ]

0 голосов
/ 10 апреля 2013

сделать сертификацию безопасности. вы можете сделать самоподписанную сертификацию, используя openssl или java и вам придется отправить копию сертификата вашему клиенту.

Если этот клиент не будет иметь этот сертификат, он не сможет вызвать вашу службу.

И чтобы включить сертификат в вашем веб-контейнере. Я не знаю о других контейнерах, но в Apache Tomcat вы можете сделать это в коннекторе тега ur server.xml

0 голосов
/ 18 ноября 2011

Я предполагаю, что вы не хотите, чтобы ваш сайт "соскребался" ботами, но хотите, чтобы люди могли получить доступ к вашей странице поиска.

Это довольно распространённое требование (гугл "анти-соскоб"). В порядке возрастания надежности (но в порядке убывания удобства использования):

  • блокировать запросы на основе заголовков HTTP (IP-адрес, пользовательский агент, реферер).
  • реализовать какую-то систему CAPTCHA
  • требует, чтобы пользователи входили в систему до доступа к поисковому URL

Возможно, вы сможете купить какое-нибудь готовое волшебство, которое (заявляет) сделает все за вас, но если ваши данные достаточно ценны, те, кто хочет их получить, будут нанимать механических турок, чтобы получить их ...

0 голосов
/ 18 ноября 2011

Как вы можете запустить результат, только если ссылающаяся страница передала переменную POST, называемую «токен», или что-то, для чего было установлено значение, которое вы присваиваете каждому приложению, которое попадет на страницу поиска.Если вы получили запрос на эту страницу со строкой запроса, но не указали значение POST для «токена», то вы знаете, что это неавторизованный запрос, и можете обработать его соответствующим образом.

0 голосов
/ 18 ноября 2011

Если вам известны IP-адреса сайтов, которые могут связаться с вашим сервисом, вы можете использовать Apache в качестве прокси-сервера и использовать контроль доступа , чтобы разрешить / запретить доступ к определенным каталогам / URL-адресам.

0 голосов
/ 18 ноября 2011

Я бы предложил внедрить какую-то систему, позволяющую пользователям входить в систему, если вы действительно хотите защитить страницу от доступа.

Вы можете попытаться определить IP-адрес входящего запроса, но я полагаю, что его можно легко подделать.

На самом деле общедоступные страницы открыты для любого вида допроса в установленных вами пределах. Возможно, ограничение данных, возвращаемых страницей, является более практичным вариантом?

Это причина того, что на веб-сайтах, таких как Facebook и Twitter, реализовано oAuth для предотвращения доступа к ресурсам неавторизованным пользователям.

...