форма php: запретить использование внешних плакатов с токенами


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

Мои знания PHP не слишком продвинуты. Итак, пока я изучал эту тему, к сожалению, ответы, которые я нашел, немного сбили меня с толку. Я нашел этот вопрос SO ранее, в котором рассматривалась проблема: Безопасная форма ajax POST. Я немного смущен первым ответом и был интересно, может ли кто-нибудь привести пример на PHP. Некоторые конкретные моменты, с которыми я борюсь, таковы:

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

Спасибо за вашу помощь!

Author: Community, 2011-08-04

2 answers

Существует ряд библиотек предотвращения CSRF, которые вы можете использовать. Один из них - CSRFGuard в OWASP

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

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

Имейте в виду что если у вас есть какие-либо уязвимости XSS, вашу защиту CSRF можно просто обойти. Поэтому обязательно поймите Предотвращение XSS также.

 2
Author: Cheekysoft, 2011-08-04 13:47:43
  1. Токен хранится в сеансе пользователя вместе с датой/временем истечения срока действия
  2. Токен может быть сгенерирован автоматически для каждого пользователя. Это должно быть достаточно случайным, чтобы избежать догадок.
  3. Да, но вы можете бороться с этим, используя генерацию и срок действия токенов для каждого пользователя. Если токен отправлен без существующего сеанса пользователя или если срок действия токена истек в текущем сеансе, перенаправьте пользователя на соответствующее уведомление об ошибке.
 1
Author: George Cummins, 2011-08-03 23:59:00