Предотвращение CSRF для вещей, которые не являются частью форм в codeigniter - PullRequest
1 голос
/ 08 августа 2011

Я знаю, что Codeigniter имеет очень полезный класс безопасности, который может предотвратить CSRF / XSRF, если вы используете помощники форм, но, поскольку структура URL CI вызывает многие функции почти напрямую, как я могу предотвратить CSRF для таких вещей, как /action/logout без дополнительной формы подтверждения, как у SE?

У меня были идеи:

  • Проверить ссылку на страницу
  • Проверить запрашиваемый тип MIME (даже возможно?) (для CSRF изображения, например <img src="http://example.com/action/logout" />)
  • Сделать все действия частью формы (не желательно)
  • Включить маркер CSRF в URL страницы (уродливо и очень плохо, пользователям нравитсякопировать и вставлять URL-адреса, не обращая внимания на сохраненные идентификаторы сеансов или другую личную информациютрата пропускной способности.

    Конечно, я знаю, что некоторые люди любят кодировать вещи для автоматизации их использования сайта, и я уважаю это, поэтому я буду создавать API для PerfoВызов действий через код или автоматически.

1 Ответ

1 голос
/ 08 августа 2011

Как правило, любой запрос формы, выполняющий действие, должен использовать POST.Для всего остального GET разрешено.Использование POST определенно поможет.Я полагаю, что вы также можете включить токен в виде скрытого поля в форме вместо уродливой строки в URL.Что касается проверки запрошенного типа MIME, это невозможно.Выполните print_r ($ _ SERVER), и в нем есть практически все, что вы получаете от пользователя, а также вещи на стороне сервера.

...