@66demon666
По навыкам джун - по факту безработный

Правильно ли я защитил сайт?

Здравствуйте! Реализую авторизацию на сайте и CSRF защиту, и не уверен, правильно ли сделал.
Авторизация:
В БД у пользователя есть поле authKey, при авторизации создается кука authKey со значением поля. authKey - случайная строка, сформированная криптостойким алгоритмом, 32 байта. Кука никак не зашифрована - нормально ли это?

CSRF:
Создание токена

public function generateCSRF() {
        $strong = true;
        if (!isset($_SESSION["csrf"])) {
            $_SESSION["csrf"] = bin2hex(openssl_random_pseudo_bytes(32, $strong));
        }
        return $_SESSION["csrf"];
    }


Проверка:
public function checkCSRF(string $csrf):bool {
        return $_SESSION["csrf"] == $csrf;
    }


Ну и checkCSRF используется при проверке формы, куда этот ключ записывается как скрытое поле
Заранее спасибо!
  • Вопрос задан
  • 599 просмотров
Решения вопроса 1
dimonchik2013
@dimonchik2013
non progredi est regredi
правильно
ты, главное, идею пойми
а как поймешь - поймешь что csrf лучше ставить JS кодом, уже сложнее для атакующего, ну и прочие навороты
ну и проверка-то правильная
а вот вставил ли ты ее ВО ВСЕ страницы где она нужна?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
catanfa
@catanfa
описанный метод защитой от CSRF не является. Атакующий может с помощью JS послать запрос на ваш сайт, и браузер передаст любые куки автоматически, таким образом CSRF атака успешно состоится. Попробуйте сами. Обычно csrf токен представляет из себя скрытое поле формы, которое генерится каждый раз уникальное, и проверяется на сервере. При таком раскладе атакующий не может знать значения этого поля, и с соответственно атака не пройдёт.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы