Какие возможные проблемы для безопасности есть в данном примере авторизации на php?
На собеседовании получил задание сделать код ревью. Мои замечания были:
- Пароль в БД храниться в открытом виде без хеширования
- При передаче user_id не приводим к числу (там может быть что угодно, включая иньекцию)
- Пароль пользователя храниться в куках - вместо этого я бы хранил id сессии
<?php
$userProfile = unserialize($_COOKIE['user_profile']);
$user = new User();
$user->importById($userProfile['user_id']);
if ($userProfile['password_hash'] != md5($user->getPassword())) {
throw new Exception('Permission denied');
}
(new UserProfileController((int)$userProfile['user_id']))->run();