Bezpečnosť webových aplikácií je kľúčová, najmä ak pracujete s citlivými údajmi. PHP je výkonný jazyk na tvorbu dynamických webov, no bez správnych bezpečnostných opatrení sa vaša aplikácia môže stať cieľom hackerov. V tomto článku sa pozrieme na hlavné bezpečnostné hrozby v PHP a ukážeme si, ako ich efektívne eliminovať.
Bezpečnostné praktiky sú metódy, ktoré pomáhajú predchádzať útokom, ochrane dát a zabezpečeniu integrity aplikácie. Tieto opatrenia zahŕňajú správnu validáciu vstupov, ochranu pred SQL injection, XSS útokmi a bezpečné ukladanie hesiel.
Dodržiavanie bezpečnostných zásad v PHP pomáha:
SQL Injection je jedna z najčastejších bezpečnostných hrozieb, pri ktorej útočník vkladá škodlivý SQL kód do formulára alebo URL.
<?php $conn = new mysqli("localhost", "root", "", "databaza"); $meno = $_GET["meno"]; $sql = "SELECT * FROM uzivatelia WHERE meno = '$meno'"; $result = $conn->query($sql); ?>
Ak útočník zadá do poľa meno
hodnotu ' OR 1=1 --
, môže získať prístup k celej databáze.
<?php $stmt = $conn->prepare("SELECT * FROM uzivatelia WHERE meno = ?"); $stmt->bind_param("s", $meno); $stmt->execute(); ?>
Pripravené SQL dotazy eliminujú možnosť vkladania škodlivého kódu do databázy.
Cross-Site Scripting (XSS) umožňuje útočníkom vkladať škodlivý JavaScript kód do aplikácie.
<?php echo "Vitaj, " . $_GET["meno"]; ?>
htmlspecialchars()
<?php echo "Vitaj, " . htmlspecialchars($_GET["meno"], ENT_QUOTES, 'UTF-8'); ?>
Tento spôsob konvertuje špeciálne znaky na bezpečné HTML entity.
Ukladanie hesiel v čitateľnom texte je obrovská bezpečnostná hrozba.
<?php $password = "tajneheslo"; $hash = md5($password); ?>
MD5 a SHA1 sú zastarané a ľahko prelomené metódy hashovania.
password_hash()
<?php $hash = password_hash("tajneheslo", PASSWORD_DEFAULT); ?>
Tento spôsob využíva bezpečný algoritmus bcrypt a je odolný voči útokom.
Vždy používajte HTTPS protokol na ochranu prenášaných údajov.
<?php if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') { header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } ?>
Cross-Site Request Forgery (CSRF) umožňuje útočníkovi vykonávať neoprávnené požiadavky v mene používateľa.
<?php session_start(); if ($_SERVER["REQUEST_METHOD"] == "POST") { if (!isset($_POST["token"]) || $_POST["token"] !== $_SESSION["token"]) { die("Neplatný CSRF token."); } } $_SESSION["token"] = bin2hex(random_bytes(32)); ?>
Používajte pripravené SQL dotazy (prepare()
a bind_param()
).
md5()
a sha1()
nebezpečné?Obe hashovacie funkcie sú zastarané a ľahko prelomené pomocou rainbow tables.
Používajte validáciu údajov, htmlspecialchars() a CSRF tokeny.
password_hash()
s bcrypt algoritmom.Ak máte záujem o prezenčné alebo online školenie programovania v PHP, pozrite si našu ponuku na www.like-it.sk. Naše kurzy vedú skúsení odborníci, ktorí vám pomôžu zvládnuť základy aj pokročilé koncepty programovania.