Профилактика Ajax CSRF без файлов cookie

Дано step1.php с идентифицированным идентификатором пользователя, вызывая step2.php с Ajax, я хочу проверить внутри step2.php что это законно называется step1.php а не злоумышленником. Я в основном хочу защитить себя от подражания другим пользователям. Мне все равно, если один и тот же пользователь звонит мне много раз. И мне нужно сделать это без использования куки.

Я пытаюсь реализовать логику, аналогичную упомянутой «Зашифрованной лексеме» Вот.

Достаточно ли безопасно следующее или я что-то пропускаю:

// step1.php
$userId = xxx;
$timeStamp = yyy;
$token = encrFunc($userId, $timeStamp); // encrFunc involves key known only to server
/* Generate JS code to call step2.php, posting userId and token */

// step2.php
$userId = $_POST['userId'];
$token = $_POST['token'];
$origUserId = decrFunc($token); // decrFunc involves key known only to server
if ($userId == $origUserId) { /* Continue normally */ }
else { /* I have been attacked! */ }

1

Решение

Похоже, вы извлекаете UserId из тела POST. Ваш основной принцип верен в том, что вы проверяете вошедшего в систему пользователя по заявке UserId в токене, однако отправка зарегистрированного UserId в теле POST необычна. В идеале это должно быть в заголовке HTTP AUTH, хотя это не относится к делу.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]