Przejdź do głównej treści
Grafika przedstawia ukryty obrazek

Ataki CSRF, XSS, SQL Injection, DoS, DDoS, Web Scraping – opis i sposoby zapobiegania w PHP

Ataki CSRF, XSS, SQL Injection, DoS, DDoS, Web Scraping – opis i sposoby zapobiegania w PHP

Ataki CSRF (Cross-Site Request Forgery)

Opis:
CSRF to atak, w którym użytkownik jest oszukiwany, aby nieświadomie wysłać nieautoryzowane żądanie do serwera, na którym jest zalogowany.

Przykład ataku:
Jeśli użytkownik jest zalogowany na stronie banku, złośliwa witryna może wysłać żądanie, które wykonuje przelew na konto atakującego, używając ciasteczek uwierzytelniających ofiary.

Zapobieganie:

  1. Tokeny CSRF – Generowanie i weryfikacja unikalnych tokenów w formularzach.
  2. Nagłówki Referer/Origin – Weryfikacja źródła żądania.

Przykład w PHP:

// Generowanie tokenu CSRF
session_start();
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

// W formularzu HTML
echo '<form method="POST" action="process.php">';
echo '<input type="hidden" name="csrf_token" value="' . $_SESSION['csrf_token'] . '">';
echo '<input type="submit" value="Submit">';
echo '</form>';
//Weryfikacja tokenu w PHP 
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
        die('CSRF token mismatch!');
    }
}

Ataki XSS (Cross-Site Scripting)

Opis:
XSS to wstrzykiwanie złośliwego kodu (np. JavaScript) w aplikacji, który jest następnie wykonywany w przeglądarce użytkownika.

Przykład ataku:
Podanie złośliwego skryptu w polu komentarza:

<script>alert('Twój komputer został zhakowany!');</script>

Zapobieganie:

  1. Filtrowanie i kodowanie danych wejściowych.
  2. Używanie funkcji htmlspecialchars() lub bibliotek takich jak HTMLPurifier.

Przykład w PHP:

// Zabezpieczenie przed XSS
$userInput = '<script>alert("XSS");</script>';
$safeOutput = htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
echo $safeOutput; // Wyświetli: &lt;script&gt;alert("XSS");&lt;/script&gt;

Ataki SQL Injection

Opis:
Atakujący wstrzykuje kod SQL w celu manipulacji bazą danych, np. wycieku danych lub nieautoryzowanego dostępu.

Przykład ataku:

SELECT * FROM users WHERE username = 'admin' -- ' AND password = '';

Zapobieganie:

  1. Używanie zapytań parametryzowanych (Prepared Statements).
  2. Filtrowanie danych wejściowych.

Przykład w PHP:

// Przygotowane zapytanie
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username AND password = :password');
$stmt->execute([
    ':username' => $_POST['username'],
    ':password' => password_hash($_POST['password'], PASSWORD_BCRYPT)
]);
$user = $stmt->fetch();
if ($user) {
    echo 'Zalogowano!';
} else {
    echo 'Niepoprawne dane logowania!';
}

Ataki DoS (Denial of Service) i DDoS (Distributed Denial of Service)

Opis:
Atak DoS polega na przeciążeniu serwera ogromną ilością żądań, co powoduje jego niedostępność. Atak DDoS wykorzystuje rozproszone źródła, np. botnety.

Zapobieganie:

  1. Wdrażanie zapór sieciowych (WAF).
  2. Limitowanie szybkości żądań (Rate Limiting).
  3. Używanie usług ochrony DDoS (np. Cloudflare).

Przykład w PHP:

// Prosty limiter żądań w PHP
$ip = $_SERVER['REMOTE_ADDR'];
$rateLimitFile = 'rate_limit_' . md5($ip) . '.txt';

if (file_exists($rateLimitFile)) {
    $lastRequest = file_get_contents($rateLimitFile);
    if (time() - $lastRequest < 1) { // 1 sekunda między żądaniami
        die('Zbyt wiele żądań. Spróbuj ponownie później.');
    }
}
file_put_contents($rateLimitFile, time());

Web Scraping

Opis:
Web Scraping polega na zautomatyzowanym zbieraniu danych z witryny.

Zapobieganie:

  1. Ograniczanie dostępu za pomocą Captcha.
  2. Blokowanie znanych user-agentów botów.
  3. Monitorowanie aktywności użytkowników.

Przykład w PHP:

// Sprawdzanie User-Agent
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if (preg_match('/bot|crawl|spider/i', $userAgent)) {
    die('Boty nie są dozwolone!');
}

Podsumowanie

Zestawienie metod zapobiegania atakom:

Typ ataku Metoda zapobiegania
CSRF Tokeny CSRF, sprawdzanie nagłówków Referer/Origin
XSS Filtrowanie danych wejściowych, htmlspecialchars()
SQL Injection Zapytania parametryzowane, filtrowanie danych
DoS/DDoS Rate Limiting, WAF, usługi ochrony DDoS
Web Scraping Captcha, blokowanie botów, monitorowanie ruchu

Wdrażanie tych technik w aplikacjach internetowych znacząco podnosi poziom bezpieczeństwa i minimalizuje ryzyko ataków. Pamiętaj, że bezpieczeństwo to proces, który wymaga stałego monitorowania i aktualizacji praktyk.

24 stycznia 2025 6

Kategorie

programowanie

Dziękujemy!
()

Powiązane wpisy


Informacja o cookies

Moja strona internetowa wykorzystuje wyłącznie niezbędne pliki cookies, które są wymagane do jej prawidłowego działania. Nie używam ciasteczek w celach marketingowych ani analitycznych. Korzystając z mojej strony, wyrażasz zgodę na stosowanie tych plików. Możesz dowiedzieć się więcej w mojej polityce prywatności.