токен md5 в скрытом поле формы - PullRequest
1 голос
/ 25 марта 2012

Я читал на нескольких сайтах об этом способе защиты форм:

Я добавляю скрытое поле:

<input type="hidden" name="token" value="<?php echo $token; ?>" />

токен генерируется:

$token = md5(uniqid(rand(), TRUE));
$_SESSION['token'] = $token;

Я понимаю, что этот код практически неразрывен из-за его случайности.

Чего я не понимаю, так это: почему они включают токен в скрытое поле формы, которое можно просмотреть в источнике HTML?

Может ли тогда пользователь сохранить форму, скопировать действительный токен md5 в поддельную версию формы и отправить ее?

Ответы [ 3 ]

3 голосов
/ 25 марта 2012

Это сделано для того, чтобы предотвратить CSRF .

Смысл не в том, чтобы Алиса не заходила на сайт Боба, а затем использовала токен для совершения плохих поступков.

Этозапрещает веб-сайту Чарльза использовать JavaScript, чтобы браузер Алисы отправлял форму на веб-сайт Боба и делал плохие вещи (с учетными данными Алисы).(Чарльз не будет иметь копию токена, чтобы положить в форму).

0 голосов
/ 25 марта 2012

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

Простым примером являются <img> элементы, которые вызывают браузердля отправки GET-запросов еще одним примером являются <form> элементы, которые автоматически генерируются и отправляются с помощью JavaScript и могут вызывать POST-запросы.

Для уменьшения этой угрозы этот случайный токен используется в качестве секрета, который известен толькосервер и браузер: сервер генерирует случайный токен, сохраняет его в сеансе и выдает его браузеру в ответе, который затем отправляет обратно в последующих запросах.При этом вредоносный сайт не может подделывать законные запросы, поскольку он не знает случайный токен и не может его получить.

0 голосов
/ 25 марта 2012

Это стратегия, помогающая предотвратить Подделка межсайтовых запросов . Неважно, что токен находится в источнике HTML, потому что он используется только один раз. Злоумышленник должен знать, что это такое, чтобы обмануть пользователя, и даже в этом случае пользователь должен сначала вызвать форму законными средствами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...