Я пытаюсь внедрить CSRF и SSL (они не полностью зависят) и перечисляю ниже свое понимание темы для подтверждения понимания. Пожалуйста, не стесняйтесь исправлять меня о понимании.
Мы видим токен CSRF почти во всех наших безопасных приложениях.
Как работает подделка межсайтовых запросов (CSRF):
Вы вошли в свой банковский счет (например, SBI или JPMC) и просматриваете свои счета, или они просто открыты в вашем браузере только потому, что вы были заняты. Теперь вы получаете электронное письмо, которое может быть текстом/изображением или чем-то еще на следующей вкладке. В момент получения электронной почты такие функции, как onload и т. д., другие функции java-скрипта могут инициировать запрос GET/PUT/POST из вашего браузера без вашего ведома. Теперь следует отметить, что CSRF фактически не может ничего прочитать с вашей защищенной веб-страницы, потому что в тот момент, когда у вас есть правильный SSL, защищенные страницы зашифрованы. А также CSRF не может украсть ваши учетные данные. На самом деле он не может обнаружить токен CSRF, хранящийся внутри скрытого тега на защищенном веб-сайте, потому что он зашифрован. Он работает только после того, как вы аутентифицировали себя на веб-сайте, и запускает запросы, которые обманывают сервер, заставляя его думать, что запрос исходит из браузера, в который вы только что вошли, и, таким образом, сервер работает в соответствии с полученным запросом.
Теперь, когда хакер пытается открыть атаку CSRF, он обманывает браузер, отправляя URL-адрес:
<img src="https://www.bankWebsite.com/transfer?amount=1000&destination=8990">
Таким образом, без вашего ведома, из сеанса, который аутентифицирован вами, запускается запрос о переводе суммы 1000 на счет номер 8990 n БУМ, вас ограбили на 1000 баксов просто так.
Как защитить себя:
Защиту от CSRF можно выполнить несколькими способами:
1) Проверка происхождения запроса из заголовка
2) Проверка цели запрос
3) токен CSRF
Как работает защита токена CSRF:
Токен CSRf присутствует в заголовке/файле cookie. Поэтому, когда хакер обманом заставляет браузер отправить запрос на сервер, токен присутствует только в заголовке, а не в отправленной форме. Поэтому, когда сервер проверяет, получен ли токен CSRF, он пытается сопоставить токен CSRF из заголовка с токеном, полученным из формы/запроса. Если его нет/не совпадает, то сервер определяет, что это атака, и останавливает дальнейшее проникновение запроса.
Прошу вас всех исправить меня, правильно ли я понимаю атаку CSRF, защиту или нет?
Также означает ли это, что без надлежащей реализации SSL CSRF бесполезен?