Wprowadzenie do SQL Injection

Założenie: Przedstawimy prosty przykład podatności na SQL Injection i pokażemy, jak jej uniknąć, używając przygotowanych zapytań.

Krok po kroku:

  1. Niebezpieczny przykład: Bezpośrednie wstawianie danych użytkownika do zapytania SQL.
  2. 
    $username = $_GET['username'];
    $query = "SELECT * FROM users WHERE username = '$username'";
    $result = mysqli_query($conn, $query); 
    // ... dalsza obróbka wyników ...
    				

    Ten kod jest podatny na SQL Injection. Zły aktor może wpisać np. username='; DROP TABLE users; --, co spowoduje usunięcie całej tabeli users.

  3. Bezpieczny przykład: Użycie przygotowanych zapytań (prepared statements).
  4. 
    $stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");
    $stmt->bind_param("s", $username); // "s" oznacza string
    $username = $_GET['username'];
    $stmt->execute();
    $result = $stmt->get_result();
    // ... dalsza obróbka wyników ...
    				

    Przygotowane zapytania chronią przed SQL Injection, ponieważ dane użytkownika są traktowane jako wartości, a nie jako część kodu SQL.

Ten przykład pokazuje podstawy SQL Injection i jak łatwo można się przed nim zabezpieczyć. Zachęcamy do dalszego zgłębiania tematu bezpieczeństwa aplikacji webowych!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *