PHP/PHP Injection

Z Wikibooks, biblioteki wolnych podręczników.
< PHP
Poprzedni rozdział: Szyfrowanie
Następny rozdział: JS/HTML Injection

PHP Injection polega na dopisywaniu przez złośliwych użytkowników fragmentów kodu do przesyłanych zmiennych m.in. za pośrednictwem formularzy znajdujących się na stronach WWW.

Przed PHP Injection można zabezpieczyć się filtrowaniem przekazywanych parametrów - wygląda to dokładnie tak samo, jak w przypadku SQL Injection, jednak atak nie ma bezpośredniego (lub nie ma w ogóle) wpływu na bazę danych.

Przykładowy atak[edytuj]

Załóżmy że użytkownik może wpisać swoje imię w formularzu, które zostanie wyświetlone. W formularzu jest jedynie pole do wpisania imienia, przesyłany metodą POST. Wyświetlanie:

<?php
$imie = $_POST['imie'];
echo("Witaj $imie !");
?>

Lecz jeżeli użytkownik wpisze:

<?php phpinfo(); ?>

To wygenerowany kod HTML będzie wyglądał tak:

Witaj <?php phpinfo(); ?> !


Jak się zabezpieczyć[edytuj]

Ulepszenie poprzedniego skryptu:

<?php
$imie = htmlspecialchars($_POST['imie']);
echo("Witaj $imie !");
?>

I już atak tego typu nam nie straszny - ostre nawiasy zostaną zastąpione kodami &lt oraz &gt, co uniemożliwi wykonanie funkcji w ten sposób.