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

Ilustracja tematu Ataki CSRF XSS SQL Injection DoS DDoS Web Scraping  opis i sposoby zapobiegania w

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 9

Kategorie

programowanie

Dziękujemy!
()

Powiązane wpisy

Ilustracja tematu Mechanizm Antiflood  jak dziaa i jak go zaimplementowa w PHP
22 stycznia 2025 3 min 7

Mechanizm Antiflood – jak działa i jak go zaimplementować w PHP

Czytaj więcej
Wizualizacja tematu Basic Authentication i Digest Authentication  porwnanie oraz analiza bezpieczest
22 stycznia 2025 3 min 20

Basic Authentication i Digest Authentication – porównanie oraz analiza bezpieczeństwa

Czytaj więcej
Zdjecie zwiazane z Bearer Authorization  mechanizm bezpieczestwo zagroenia i implementacja
22 stycznia 2025 3 min 12

Bearer Authorization – mechanizm, bezpieczeństwo, zagrożenia i implementacja

Czytaj więcej
Wymiana doświadczeń

Masz podobne doświadczenia?

Chętnie poznam Twoją perspektywę i porozmawiam o tym temacie szerzej.

Napisz do mnie

Każda perspektywa może wnieść coś wartościowego do dyskusji.

Twoja prywatność i pliki cookies

  1. Ta strona internetowa wykorzystuje wyłącznie niezbędne pliki cookies, które są wymagane do jej prawidłowego działania – m.in. do poprawnego wyświetlania treści, zapamiętania podstawowych ustawień przeglądarki oraz zapewnienia stabilności serwisu.
  2. Nie stosuję plików cookies w celach marketingowych, reklamowych ani analitycznych.
  3. Strona ma charakter wyłącznie informacyjny i nie zawiera formularzy kontaktowych, rejestracyjnych ani zakupowych, przez które dane mogłyby być przesyłane na serwer.
  4. Nie zbieram danych osobowych podczas zwykłego korzystania z witryny.
  5. Serwis nie korzysta z certyfikatu SSL, jednak ze względu na informacyjny charakter strony nie jest wymagane przesyłanie poufnych danych. Zalecam jednak, aby nigdy nie wpisywać haseł ani danych osobowych na stronach bez szyfrowanego połączenia.
  6. Korzystając z tej strony, wyrażasz zgodę na używanie wyłącznie niezbędnych plików cookies.

Więcej informacji znajdziesz w mojej polityce prywatności.