Загрузка данных


C:\xampp\htdocs\dvwa\safe_sqli.php


<?php
// Безопасная версия модуля Blind SQL Injection (DVWA)
// Отличие от уязвимого low.php: используется PDO с плейсхолдером,
// пользовательский ввод не попадает в текст SQL-запроса.

$dsn = 'mysql:host=127.0.0.1;dbname=dvwa;charset=utf8mb4';
$pdo = new PDO($dsn, 'root', '', [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES   => false, // серверные плейсхолдеры
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);

$id = $_GET['id'] ?? '';

// Дополнительная валидация: id должен быть целым числом
if (!ctype_digit((string)$id)) {
    http_response_code(400);
    echo '<pre>Invalid ID</pre>';
    exit;
}

$stmt = $pdo->prepare(
    'SELECT first_name, last_name FROM users WHERE user_id = :id'
);
$stmt->execute([':id' => $id]);
$user = $stmt->fetch();

if ($user) {
    echo '<pre>User ID exists in the database.</pre>';
    echo '<pre>First name: ' . htmlspecialchars($user['first_name'], ENT_QUOTES, 'UTF-8') . '</pre>';
    echo '<pre>Surname: '    . htmlspecialchars($user['last_name'],  ENT_QUOTES, 'UTF-8') . '</pre>';
} else {
    http_response_code(404);
    echo '<pre>User ID is MISSING from the database.</pre>';
}





http://localhost/dvwa/safe_sqli.php?id=1
http://localhost/dvwa/safe_sqli.php?id=1' OR '1'='1