This media is not supported in your browser
VIEW IN TELEGRAM
Safety🪬, [02.04.2025 16:00]
🚀 Полное руководство по PHP – Глава 38
📌 Тема: Безопасность в PHP – Защита от SQL-инъекций и XSS
Привет, кодеры! 👨💻 В этой главе разберём ключевые аспекты безопасности PHP-приложений.
### 🔒 1. Защита от SQL-инъекций
Используйте подготовленные выражения (Prepared Statements) вместо прямой вставки переменных в SQL-запросы.
Пример с PDO:
Пример с MySQLi:
### 🛡 2. Защита от XSS (Cross-Site Scripting)
Всегда экранируйте вывод с помощью
### 🔐 3. Валидация и фильтрация данных
Используйте
### 🚫 4. Защита от CSRF (межсайтовая подделка запроса)
Используйте CSRF-токены:
📢 Подписывайтесь на канал [Safety_Y](https://t.me/Safety_Y) – больше полезного о безопасности в IT!
#PHP #Безопасность #WebDev #Программирование #SQL #XSS
🚀 Полное руководство по PHP – Глава 38
📌 Тема: Безопасность в PHP – Защита от SQL-инъекций и XSS
Привет, кодеры! 👨💻 В этой главе разберём ключевые аспекты безопасности PHP-приложений.
### 🔒 1. Защита от SQL-инъекций
Используйте подготовленные выражения (Prepared Statements) вместо прямой вставки переменных в SQL-запросы.
Пример с PDO:
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $email]);
$user = $stmt->fetch();Пример с MySQLi:
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();### 🛡 2. Защита от XSS (Cross-Site Scripting)
Всегда экранируйте вывод с помощью
htmlspecialchars(): echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
### 🔐 3. Валидация и фильтрация данных
Используйте
filter_var(): $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
if ($email === false) {
die("Некорректный email!");
}
### 🚫 4. Защита от CSRF (межсайтовая подделка запроса)
Используйте CSRF-токены:
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
die("Ошибка CSRF-токена!");
}
// Обработка формы
}
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
📢 Подписывайтесь на канал [Safety_Y](https://t.me/Safety_Y) – больше полезного о безопасности в IT!
#PHP #Безопасность #WebDev #Программирование #SQL #XSS
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Полное руководство по PHP – Глава 39
📌 Тема: Работа с файлами и загрузка файлов на сервер
Привет, разработчики! 👨💻 В этой главе разберём, как безопасно работать с файлами в PHP и реализовать загрузку файлов на сервер.
### 📂 1. Основы работы с файлами
Чтение файла:
Запись в файл:
Проверка существования файла:
### ⚠️ 2. Безопасная загрузка файлов
Пример обработки загружаемого файла:
### 🔒 3. Безопасность при работе с файлами
- Проверяйте MIME-тип файла (
- Генерируйте случайные имена для файлов, чтобы избежать перезаписи.
- Ограничивайте права доступа к папке загрузок (
- Используйте `is_uploaded_file()` для проверки легитимности файла.
📢 Подписывайтесь на канал [Safety_Y](https://t.me/Safety_Y) – больше полезного о безопасности в IT!
#PHP #Файлы #WebDev #Безопасность #Программирование #ЗагрузкаФайлов
📌 Тема: Работа с файлами и загрузка файлов на сервер
Привет, разработчики! 👨💻 В этой главе разберём, как безопасно работать с файлами в PHP и реализовать загрузку файлов на сервер.
### 📂 1. Основы работы с файлами
Чтение файла:
$content = file_get_contents('example.txt');
echo $content;Запись в файл:
file_put_contents('example.txt', 'Hello, PHP!');Проверка существования файла:
if (file_exists('example.txt')) {
echo "Файл существует!";
}### ⚠️ 2. Безопасная загрузка файлов
Пример обработки загружаемого файла:
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
$uploadDir = 'uploads/';
$fileName = basename($_FILES['file']['name']);
$filePath = $uploadDir . $fileName;
$fileType = strtolower(pathinfo($filePath, PATHINFO_EXTENSION));
// Проверка типа файла (например, только изображения)
$allowedTypes = ['jpg', 'png', 'jpeg', 'gif'];
if (!in_array($fileType, $allowedTypes)) {
die("Недопустимый тип файла!");
}
// Проверка размера файла (например, не более 2MB)
if ($_FILES['file']['size'] > 2 * 1024 * 1024) {
die("Файл слишком большой!");
}
// Перемещение файла в нужную директорию
if (move_uploaded_file($_FILES['file']['tmp_name'], $filePath)) {
echo "Файл успешно загружен!";
} else {
echo "Ошибка загрузки файла!";
}
}### 🔒 3. Безопасность при работе с файлами
- Проверяйте MIME-тип файла (
$_FILES['file']['type']). - Генерируйте случайные имена для файлов, чтобы избежать перезаписи.
- Ограничивайте права доступа к папке загрузок (
chmod). - Используйте `is_uploaded_file()` для проверки легитимности файла.
📢 Подписывайтесь на канал [Safety_Y](https://t.me/Safety_Y) – больше полезного о безопасности в IT!
#PHP #Файлы #WebDev #Безопасность #Программирование #ЗагрузкаФайлов
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-интеграцию! 💡