This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Полное руководство по PHP – Глава 40
📌 Тема: Аутентификация и авторизация в PHP
Привет, кодерам! 👋 В этой главе разберём, как правильно реализовать вход пользователей и управление их правами.
### 🔑 1. Базовая аутентификация
Хранение паролей:
Всегда используйте
### 🛡 2. Защита сессий
### 🔐 3. Ролевая модель (авторизация)
### ⚠️ 4. Защита от bruteforce
### 🔥 Бонус: JWT-авторизация (для API)
📢 Больше о безопасности: [Safety_Y](https://t.me/Safety_Y)
#PHP #Безопасность #Аутентификация #JWT #WebDev #Программирование
P.S. В следующей главе разберём OAuth-интеграцию! 💡
📌 Тема: Аутентификация и авторизация в PHP
Привет, кодерам! 👋 В этой главе разберём, как правильно реализовать вход пользователей и управление их правами.
### 🔑 1. Базовая аутентификация
Хранение паролей:
Всегда используйте
password_hash() и password_verify()! // Регистрация
$hashedPassword = password_hash($_POST['password'], PASSWORD_DEFAULT);
// Сохраняем $hashedPassword в БД
// Вход
$user = getUserFromDB($_POST['login']);
if ($user && password_verify($_POST['password'], $user['password'])) {
$_SESSION['user_id'] = $user['id'];
header('Location: /dashboard.php');
} else {
die('Неверный логин или пароль!');
}
### 🛡 2. Защита сессий
session_start([
'cookie_secure' => true, // Только HTTPS
'cookie_httponly' => true, // Запрет JS-доступа
'use_strict_mode' => true // Защита от фиксации
]);
// Регенерация ID сессии после входа
session_regenerate_id(true);
### 🔐 3. Ролевая модель (авторизация)
// Проверка прав
function checkPermission($requiredRole) {
if ($_SESSION['user_role'] !== $requiredRole) {
header('HTTP/1.0 403 Forbidden');
die('Доступ запрещён!');
}
}
// Использование
checkPermission('admin');
### ⚠️ 4. Защита от bruteforce
// Ограничение попыток входа
if ($_SESSION['login_attempts'] > 5) {
die('Превышено число попыток. Попробуйте позже.');
}
### 🔥 Бонус: JWT-авторизация (для API)
use Firebase\JWT\JWT;
// Генерация токена
$payload = [
'user_id' => 123,
'exp' => time() + 3600 // 1 час
];
$jwt = JWT::encode($payload, 'your_secret_key', 'HS256');
// Проверка токена
try {
$decoded = JWT::decode($jwt, 'your_secret_key', ['HS256']);
} catch (Exception $e) {
http_response_code(401);
die('Недействительный токен!');
}
📢 Больше о безопасности: [Safety_Y](https://t.me/Safety_Y)
#PHP #Безопасность #Аутентификация #JWT #WebDev #Программирование
P.S. В следующей главе разберём OAuth-интеграцию! 💡