Мені просто цікаво, скільки насправді додає захист CSRF від laravel.
Виправте моє, якщо я тут помиляюся, але не змогли ви просто скребте вміст сторінки, як тільки ви один раз придбали сеанс?
Laravel захоплює маркер CSRF, пов'язаний з сеансом, і додає його до сторінки як метатаг для запитів AJAX.
<meta name="csrf-token" content="{{ csrf_token() }}">
https://laravel.com/docs/5.4/csrf#csrf-x-csrf-token
Звичайно, ви можете видалити метатег, якщо вам не потрібен функціонал AJAX, але нехай "скажіть, просто ви не хочете".
Як тільки у вас буде сесія на місці CSRFзалишиться тим самим для сеансу. Звичайно, хтось має багато працювати над тим, як налаштувати, але хіба це не можливо вирішити маркер CSRF? Я думаю, це все ще допомагає мати шар захисту, який запобігає надзвичайно легко copy/paste
Атаки CSRF.
Просто цікаво, сподіваємось, хтось може розширити це.
Редагувати:
Я знаю, як працює ЦСРР, люди плутають, якLaravel має справу з CSRF щодо того, як вони очікують, що він буде працювати. Люди очікують, що маркер CSRF відновлюється за запитом, але це не так з Laravel:
https://github.com/illuminate/session/blob/master/Store.php#L72
Я також не бачу, як ви зможете перевірити запити AJAX CSRF, якщо до речі, ви не хочете зберігати ваш маркер CSRF для декількох запитів.
Nevermind знайшов відповідь:
https://security.stackexchange.com/questions/22903/why-refresh-csrf-token-per-form-request
Це іде в глибину, чому генерування токена CSRF для кожного запиту є поганою ідеєю.
Відповіді:
0 для відповіді № 1ви тут добре подумали. Але з посиланням на відповідь на це питання.
Чи можливо порушити перевірку токенів CSRF за допомогою file_get_contents в PHP
Навіть якщо хтось записує та витягує маркер csrf, йому знадобиться ще один http-запит, який взамін створить ще один маркер. Тож усі зусилля будуть марними.
Примітка: Я поставив це у розділі відповідей, тому що мені не вистачає репутації, щоб розмістити його в коментарях. Спасибі