Ako zabezpečiť PHP aplikáciu: Od validácie vstupov až po ochranu session

Bezpečnosť je kľúčovým aspektom každej webovej aplikácie. Ak chcete vytvoriť bezpečnú aplikáciu, musíte sa zamerať na ochranu proti rôznym typom útokov, ako sú SQL injection, Cross-Site Scripting (XSS) a Cross-Site Request Forgery (CSRF). Tento článok vám poskytne návod, ako správne zabezpečiť aplikácie v PHP a ochrániť ich pred týmito a ďalšími hrozbami.

1. Validácia a sanitizácia vstupov (filter_input, htmlspecialchars)

Správna validácia a sanitizácia používateľských vstupov je základom ochrany pred rôznymi typmi útokov. Je dôležité vždy overovať, či vstupy od používateľov spĺňajú očakávané formáty, a zároveň ich sanitizovať, aby sa zabránilo škodlivým skriptom alebo neplatným údajom.

Príklad validácie:

<?php
$meno = filter_input(INPUT_POST, 'meno', FILTER_SANITIZE_STRING);
?>

Pri zobrazení týchto údajov na stránke používajte funkciu htmlspecialchars() na ochranu proti XSS.

2. Prevencia SQL injection (prepared statements, PDO)

SQL injection je jedným z najbežnejších spôsobov, ako môžu útočníci manipulovať s databázou. Aby ste sa vyhli tomuto problému, používajte pripravované SQL dotazy s parametrami, ktoré automaticky zabezpečia vstupy.

Príklad použití PDO na pripravený dotaz:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'password');
$stmt = $pdo->prepare('SELECT * FROM uzivatelia WHERE meno = :meno');
$stmt->bindParam(':meno', $meno);
$stmt->execute();
?>

3. Cross-Site Scripting (XSS) a Cross-Site Request Forgery (CSRF) – príčiny a riešenia

XSS útoky umožňujú útočníkovi vložiť škodlivý kód (napríklad JavaScript) do vašej aplikácie, ktorý sa vykoná v prehliadači používateľa. CSRF útoky sa zameriavajú na zneužitie existujúcich prihlásení používateľa na vykonanie nežiaducich akcií.

Pre ochranu proti XSS používajte funkciu htmlspecialchars() pri zobrazení údajov používateľa a pre ochranu proti CSRF pridajte do formulárov tokeny, ktoré overujú platnosť požiadavky.

4. Bezpečnostné hlavičky v prehliadači (Content-Security-Policy, X-Frame-Options)

Bezpečnostné hlavičky môžu výrazne zlepšiť ochranu vašej aplikácie. Napríklad hlavička Content-Security-Policy pomáha zabrániť načítavaniu škodlivého obsahu z neznámych domén a hlavička X-Frame-Options zamedzí vloženiu stránky do iframe, čo zabraňuje clickjacking útokom.

Příklad nastavení hlaviček:

<?php
header("Content-Security-Policy: default-src 'self';");
header("X-Frame-Options: DENY");
?>

5. Správa hesiel a používanie kryptografických funkcií (password_hash, salt)

Správne zabezpečenie hesiel je nevyhnutné pre ochranu používateľských účtov. Heslá nikdy neukladajte v plain-text forme. Použite funkciu password_hash() na vytvorenie hashov hesiel a password_verify() na overenie hesiel pri prihlasovaní.

Príklad:

<?php
$heslo = 'tajneheslo';
$hash = password_hash($heslo, PASSWORD_BCRYPT);
if (password_verify($heslo, $hash)) {
    echo 'Heslo je správne';
} else {
    echo 'Heslo je nesprávne';
}
?>

Záver

Bezpečnosť je kľúčová pre každú aplikáciu. Použitím správnych techník na ochranu pred SQL injection, XSS a CSRF a zabezpečením vstupov a hesiel môžete vytvoriť robustnú a bezpečnú aplikáciu. Ak chcete získať viac praktických zručností v PHP, vyskúšajte náš kurz PHP – Programovanie dynamických webových stránok v PHP a úvod do AJAXu.

Ako začať programovať?

Úvod do programovania pre každého bez prechádzajúcich znalostí.

Stiahnite si náš ebook teraz výnimočne zdarma!!!

Viac informacií preberáme na kurze:

Kurz PHP - Programovanie dynamických webových stránok v PHP a úvod do AJAXu

Marián Knězek

 

Súvisiace články: