KOMENTARZE

NIGDY NIE UFAJ OTRZYMANYM DANYM !!!

Sprawdzanie danych

Strona: php.net/manual/pl/ref.var.php.
  1. isset(): bool
  2. is_int(): bool
  3. is_bool(): bool
  4. is_float(): bool
  5. is_numeric(): bool
  6. ...

Czyszczenie zmiennych

  1. trim(): usuwanie spacji z prozodu i z tyłu
  2. strip_tags(): usuwanie tagów html z łańcuach
  3. htmlspecialchars(): konwertowanie znaków & " ' < > na encje HTML
  4. htmlentities(): Konwertuj wszystkie "podejrzanych" znaków na encje HTML; jeśli stosujemy wszędzie utf-8, to można zapomnieć o tej funkcji
  5. filter_var($x,FILTER): wartość przefiltrowana lub false
    • FILTER_SANITIZE_STRING
    • FILTER_VALIDATE_INT
    • FILTER_VALIDATE_IP
    • FILTER_SANITIZE_EMAI
    • FILTER_VALIDATE_URL

Funkcja strip_tags

Rozważamy kod
  $x = "Ala ma <a href='#'>kota</a> i <strong>psa</strong>.";
  echo $x; 
  echo strip_tags($x);
  echo strip_tags($x,"<strong>");
Ala ma kota i psa.
Ala ma kota i psa.
Ala ma kota i psa.

Cross-Site Injection: htmlspecialchars()

Ten kod zanurzy niewidoczną ramkę w stronę:
$x = "Jan Kowalski<iframe src='http://hacker.com/xss-injection.php' style='width:0;height:0;border:0; border:none;'/>";
echo $x;
i wyświetli tekst
Jan Kowalski
Rozważmy ten kod
$x = "Jan Kowalski<iframe src='http://hacker.com/xss-injection.php' style='width:0;height:0;border:0; border:none;'/>";
$x =  htmlspecialchars(trim($x));
echo $x;
teraz wyświetlony będzie napis
Jan Kowalski<iframe src='http://hacker.com/xss-injection.php' style='width:0;height:0;border:0; border:none;'/>

TESTY

Przed przefiltrowaniem mamy:
Jan Kowalski
Po przefiltrowaniu mamy:
Jan Kowalski <iframe src='#' style='width:0;height:0;border:0; border:none;'/></iframe>

ZALECENIA

Kod obsługi email'a

<?php
if(isset($_POST['name']))
{
  $name    = $_POST['name'];
  $replyto = $_POST['replyTo'];
  $message = $_POST['message'];
  
  // Nagłówek SMTP 
  $headers = "From: $name \n" .
  "Reply-To: $replyto";
  
  mail("root@localhost", "Uwagi klienta", $message, $headers);
}
?>

Spodziewane użycie

name=Joe Bloggs&replyTo=joebloggs@example.com&message=Example message

Mniej spodziewane użycie

name=Attacker\nbcc: spam@victim.com&replyTo=attacker@attacker.com&message=Attacker message
(windows: zastąp \n przez \r\n)