SQL Injection — jak działać
SQL Injection to atak polegający na wstrzyknięciu złośliwego kodu SQL do pól formularza lub parametrów URL. Może skutkować kradzieżą całej bazy danych lub jej usunięciem.
Przykład podatnego kodu PHP
<?php
// NIEBEZPIECZNE - NIE rób tak!
$id = $_GET['id'];
$query = "SELECT * FROM users WHERE id = $id";
$result = $pdo->query($query);
?>
Bezpieczny kod z Prepared Statements
<?php
// BEZPIECZNE - zawsze używaj Prepared Statements
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$_GET['id']]);
$result = $stmt->fetchAll();
?>
Ochrona WordPress przed SQL Injection
// Użyj $wpdb->prepare() zamiast bezpośrednich zapytań
global $wpdb;
$user_id = intval($_GET['user_id']);
$result = $wpdb->get_results(
$wpdb->prepare("SELECT * FROM {$wpdb->users} WHERE ID = %d", $user_id)
);
ModSecurity i WAF
Włącz ModSecurity na serwerze — filtruje SQL Injection na poziomie serwera WWW przed dotarciem do PHP. host247.pl ma ModSecurity aktywny domyślnie.