Я знаю, что у Codeigniter есть очень полезный класс безопасности, который может предотвратить CSRF/XSRF, если вы используете помощники формы, но поскольку структура URL-адреса CI вызывает множество функций в значительной степени напрямую, как я могу предотвратить CSRF для таких вещей, как /action/logout
, не имея дополнительная форма подтверждения, как у SE?
Идеи, которые у меня были:
- Проверить реферер страницы
- Проверить запрошенный тип MIME (даже возможно?) (для изображения CSRF, такого как
<img src="http://example.com/action/logout" />
) - Сделать все действия частью формы (не желательно)
- Включите токен CSRF в URL-адрес страницы (уродливо и очень плохо, пользователи любят копировать и вставлять URL-адреса, не обращая внимания на сохраненные идентификаторы сеансов или другую личную информацию).
Я не буду защищать такие вещи, как /account/view/1/cyclone/
, так как они не выполняют никаких действий и в лучшем случае будут пустой тратой трафика.
Конечно, я знаю, что некоторым людям нравится кодировать вещи для автоматизации использования своего веб-сайта, и я уважаю это, поэтому я буду создавать API для выполнения действий с помощью кода или автоматически.