Как заблокировать не-браузерные клиенты от отправки запроса? - PullRequest
1 голос
/ 19 марта 2010

Я хочу заблокировать не-браузерным клиентам доступ к определенным страницам / успешное выполнение запроса.

Контент сайта предоставляется аутентифицированным пользователям. Случается, что наш пользователь передает свои учетные данные нашему веб-сайту третьей стороне - это может быть другой веб-сайт или мобильное приложение, которое выполняет запросы от его имени.

Скажем, есть форма, которую пользователь заполняет и отправляет сообщение. Можно ли защитить эту форму, чтобы сервер, обрабатывающий отправку, мог определить, отправил ли пользователь ее непосредственно из браузера или нет?

Я не хочу использовать CAPTCHA по соображениям удобства использования. Могу ли я сделать это с помощью некоторого JavaScript?

Ответы [ 3 ]

7 голосов
/ 19 марта 2010

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

В любом случае они могут записывать запросы, которые браузер отправляет с использованием прокси-сервера, и отрабатывать любые уловки, которые у вас есть в JavaScript.

Что касается того, что приходит на ум (чтобы поднять планку) (используя javascript):

  1. Изменить местоположение, куда отправляется отправка.
  2. Изменить имена полей во время отправки.
  3. Скрыть поля, которые должны выглядеть, должны быть заполнены.
  4. Шифрование / обфускация содержимого формы во время отправки.
  5. Измените GET на POST.

Другая проблема с юзабилити заключается в том, что любой, у кого отключен JavaScript, вообще не сможет пользоваться сервисом. Это может повлиять на удобство использования больше, чем CAPTCHA.

1 голос
/ 19 марта 2010

Нет надежного способа обнаружить агент HTTP - вы сломаете форму для некоторых браузеров в любом случае - если вы не можете заставить пользователей использовать очень ограниченный набор браузеров (но это быть подделанным снова).

ИМО, пытаясь ограничить программное обеспечение, которое можно использовать для доступа к форме, вы должны убедиться, что этим программным обеспечением управляет настоящий человек. К сожалению, для этого нет лучшего способа, чем капчи, если только у всех клиентов нет доступа к биометрическим сканерам.

0 голосов
/ 19 марта 2010

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

Чтобы узнать, является ли навигатор mozilla на основе javascript:

var isMoz = window.navigator.userAgent.match(/^Mozilla/)?true:false;

с php вы можете попробовать нативную функцию get_browser

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...