Пишете свой движок для блога? Отлично. Но даже «простой вывод статей» может стать воротами для взлома — если допустить типичные ошибки. Вот что ломают первым делом.
Если вы вставляете данные из 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();
Динамический 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');
}
Если вы выводите данные пользователя (заголовки, комментарии, даже URL) без экранирования — вы даёте атакующему внедрить JS.
<h1><?= $_GET['title'] ?> </h1>
→ ?title=<script>stealCookies()</script>
<h1><?= htmlspecialchars($_GET['title'], ENT_QUOTES, 'UTF-8') ?> </h1>
Даже один eval(), system() или file_get_contents() с пользовательским вводом — это «открой замок и зайди».
eval($_POST['code']); // 💀 Прямой удалённый запуск кода
**Правило:** никогда не передавайте пользовательские данные в функции, которые выполняют код или обращаются к ФС без жёсткой валидации.
Если вы добавите админку «потом», помните:
session_regenerate_id() после входа;session.cookie_httponly = 1, session.cookie_samesite = 'Strict';Самописный движок — не приговор к уязвимостям. Главное: → Никогда не доверяйте входным данным. → Экранируйте всё, что выводите. → Не выполняйте ничего, что пришло от пользователя. → И не бойтесь публиковать код — настоящая безопасность в качестве, а не в тайне.
Проверили свой код? Отлично. Теперь можно делиться — и не бояться, что «доброта» обернётся взломом.
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!