Недавно я создал две страницы: front-end.php и back-end.php.
front-end.php публикует некоторые данные в back-end.php по щелчку мыши (для этого я сейчас использую ajax).
Теперь, если я использую Fiddler, я также могу публиковать данные в back-end.php. Я не хочу, чтобы это произошло. Что я должен делать?
Я искал в Интернете ответ и нашел слово «Установка User_agent», но решение не дано четко.
Что касается того, что я хочу, то на самом деле я не хочу, чтобы какой-нибудь бот или какая-либо другая программа автоматически получала данные из какого-либо источника и публиковала их в моем back-end.php. Я хочу убедиться, что пользователь заходит на мою веб-страницу, а затем публикует некоторые данные.
Пользовательский агент — это заголовок, который ваш браузер отправляет на веб-сервер с каждым запросом, идентифицирующим себя. Здесь вы можете увидеть на что это похоже.
Fiddler отправляет «*» или «Fiddler» в качестве пользовательского агента, поэтому вы можете игнорировать запросы, имеющие эти значения. Однако это далеко не оптимальное решение вашей проблемы, потому что можно просто подделать заголовок пользовательского агента, отправив все, что ей нравится.
Другим небезопасным условием будет проверка рефери. Таким образом, вы можете игнорировать все запросы, кроме тех, которые приходят из «front-end.php». Имейте в виду, что это тоже может быть подделано пользователем.
Следует также помнить, что, поскольку пользователь может отправлять данные на веб-сервер с помощью своего браузера, ничто не может помешать ему отправлять данные или делать запросы любым другим способом.
В целом, веб-разработчики должны уважать свободу пользователя и не навязывать такую тактику, поэтому, пожалуйста, будьте более конкретны и скажите нам, что именно реальный проблема, которую вы хотите решить, и может существовать более элегантное / безопасное решение.
РЕДАКТИРОВАТЬ: Если вы не хотите, чтобы сканеры проиндексировали некоторые / все ваши страницы, вы должны добавить их в свой файл robots.txt.
Что касается всех других автоматизаций / программ, я боюсь, что нет идеального способа убедиться, что запрос был сделан человеком или роботом. Я бы сделал две вещи: а) Обязательно добавлю правила проверки в свой бэкэнд и б) в качестве последнего средства реализации тест CAPTCHA.
Я бы использовал CAPTCHA, только если это абсолютно необходимо, потому что это раздражает большинство пользователей и усложняет их жизнь.
Вы должны добавить хэш некоторого внутреннего секрета и значение, которое вы хотите отправить. Поскольку вы единственный, кто знает, как создать хеш, скрипач не может знать, как создать секрет.
Например, вы создаете хеш «asdflj8 ###### GJlk», объединяемый с любым значением в вашей форме. Теперь хакер не может изменить форму. Проблема в том, что вы Можно отправить то же значение (с тем же хешем) из другого места. Чтобы этого не случилось, вы должны убедиться, что все хеши могут использоваться только один раз. Единственное, что может сделать хакер, — это опубликовать ваш запрос от fiddler. вместо с вашего сайта, но не в то же время. В качестве последнего шага вы можете добавить что-то в качестве ограничения по времени
Так что вам нужен хеш с:
добавить это как поле. Конкретная реализация оставлена в качестве упражнения;)
Я бы не использовал user_agent, их легко подделать.
(эти методы те же, что и у провайдеров платежей, чтобы гарантировать, что данные (например, сумма, подлежащая оплате!) не подделаны)
Самый короткий ответ: все, что может сделать ваш браузер, может сделать Fiddler. Он может отправлять любой заголовок, используя любое значение.
Если ваша цель состоит в том, чтобы иметь возможность передавать некоторые значения с одной страницы на другую, без ЛЮБОГО изменения их (либо в браузере, либо в Fiddler) вы используете код аутентификации сообщений (подписанный хэш данных).
ASP.NET создает эту функцию для своих данных «ViewState»; увидеть http://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.enableviewstatemac(v=vs.110).aspx
Однако это не позволяет клиенту (например, вашему JavaScript) изменять значения вообще; если JavaScript может изменять значения, это означает, что у него есть ключ, и если у него есть ключ, то же самое относится и к Fiddler.