Категории

Топ-5 дыр в PHP-движках: как не превратить свой блог в ботнет

2025-12-10 14:15:35 | Статья из категории: Создание сайтов

Топ-5 дыр в PHP-движках: как не превратить свой блог в ботнет

Пишете свой движок для блога? Отлично. Но даже «простой вывод статей» может стать воротами для взлома — если допустить типичные ошибки. Вот что ломают первым делом.

1. SQL-инъекции — классика, но не умерла

Если вы вставляете данные из URL или форм прямо в SQL-запрос — вы уже уязвимы.

Опасно:
$id = $_GET['id'];
$query = "SELECT * FROM posts WHERE id = $id"; // 💀 Взлом через ?id=1 OR 1=1
$result = mysqli_query($conn, $query);
Безопасно:
$id = (int)$_GET['id']; // Приведение к числу — для ID
// ИЛИ
$stmt = $pdo->prepare("SELECT * FROM posts WHERE id = ?");
$stmt->execute([$_GET['id']]);
$post = $stmt->fetch();

2. Локальный файловый инклуд (LFI)

Динамический include по параметру из URL — верный путь к чтению любых файлов на сервере.

Опасно:
include($_GET['page'] . '.php');

→ Запрос ?page=../../../etc/passwd может вывести системные файлы.

Безопасно:
$allowed = ['home', 'about', 'contact'];
$page = $_GET['page'] ?? 'home';
if (in_array($page, $allowed)) {
    include($page . '.php');
} else {
    include('404.php');
}

3. XSS — когда ваш блог крадёт куки посетителей

Если вы выводите данные пользователя (заголовки, комментарии, даже URL) без экранирования — вы даёте атакующему внедрить JS.

Опасно:
<h1><?= $_GET['title'] ?>  </h1>

?title=<script>stealCookies()</script>

Безопасно:
<h1><?= htmlspecialchars($_GET['title'], ENT_QUOTES, 'UTF-8') ?>  </h1>

4. Использование опасных функций

Даже один eval(), system() или file_get_contents() с пользовательским вводом — это «открой замок и зайди».

Опасно:
eval($_POST['code']); // 💀 Прямой удалённый запуск кода

**Правило:** никогда не передавайте пользовательские данные в функции, которые выполняют код или обращаются к ФС без жёсткой валидации.

5. Отсутствие защиты сессий (если есть авторизация)

Если вы добавите админку «потом», помните:

Заключение

Самописный движок — не приговор к уязвимостям. Главное: → Никогда не доверяйте входным данным. → Экранируйте всё, что выводите. → Не выполняйте ничего, что пришло от пользователя. → И не бойтесь публиковать код — настоящая безопасность в качестве, а не в тайне.

Проверили свой код? Отлично. Теперь можно делиться — и не бояться, что «доброта» обернётся взломом.

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA