E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Diverse (10)

Extensia Filter si validarea datelor externe

28.03.2009
Extensia Filter si validarea datelor externe

Securitatea in aplicatiile PHP este un subiect foarte vast. Acest tutorial explica una dintre cele mai importante parti din politica de securitate: filtrarea datelor provenite de la utilizatori.

Total vizualizari: 6445 6445 afisari   |   Comentarii  1   |   Rating   |   (1 vot)   |   Timp necesar: 30 min 30 min   |   Nivel de cunostiinte necesar: Avansat  Avansat

Sursa:  devzone.zend.com  
Autor:  devzone.zend.com
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
1 23 »
comenteaza printeaza

Securitatea este prioritatea principala a multor developeri PHP, capatand amploare cu fiecare proiect, open source sau comercial.

Securitatea in aplicatiile PHP este un subiect foarte vast. Acest tutorial explica una dintre cele mai importante parti din politica de securitate: filtrarea datelor provenite de la utilizatori.

Nu te increde in datele externe

Practic, toate aplicatiile (web, desktop, consola) asteapta o actiune din exterior pentru a crea un output sau pentru a executa o operatie. Aceste actiuni pot veni de la un utilizator sau de la o aplicatie (servicii web, bots, scanner, etc). Regula numarul 1 pentru fiecare developer este: Filtreaza toate datele necunoscute !

Prelucrarea datelor este un element esential pentru securitatea oricarei aplicatii, indiferent de limbajul in care a fost implementata aceasta sau de mediul in care ruleaza. PHP ofera o serie vasta de instrumente si functii pentru a validarea informatiilor, dar, spre deosebire de alte limbaje de programare ca perl sau cgi, nu include functii standard pentru filtrarea datelor. De aceea, a fost creata o extensie denumita Filter, care elimina acest dezavantaj.

Ce inseamna date externe?

  • Orice informatii transmise prin intermediul unui formular;
  • Orice variabile $_GET, $_POST, $_REQUEST;
  • Cookie-uri ($_COOKIES);
  • Informatii transmise de servicii web;
  • Fisiere;
  • Unele variabile de server (ex: _SERVER['SERVER_NAME']);
  • Variabile de mediu;
  • Rezultatele interogarilor din bazele de date.

Filter suporta variabile get, post, cookie, server si de mediu, dar si variabile definite de utilizator.

De ce Filter?

Testarea, validarea si filtrarea datelor poate fi o sarcina obositoare si repetitiva. Este usor sa uiti o conditie sau sa scrii incomplet o expresie regulata. Extensia Filter isi propune sa faca filtrarea datelor mai usoara, asa cum poti vedea si in exemplul de mai jos, ce valideaza datele primite prin $_GET.

Fara Filter:

<?php
if (isset($_GET['mode'])) {
    if (!is_numeric($_GET['mode'])) {
        echo "Variabila mode trebuie sa fie o valoare intreaga.<br />";
        exit();
    }
    $mode = (int)$_GET['mode'];
} else {
    echo "Variabila mode lipseste.<br />";
    exit();
}
 
if (isset($_GET['type'])) {
     $type = (int)$_GET['type'];
    if (!is_numeric($_GET['type']) ||
        (is_numeric($_GET['type']) && $type >= 3 && $type <= 10)) {
        echo "Variabila mode trebuie sa fie o valoare intreaga intre 3 si 10.<br />";
        exit();
    } else {
    }
    $mode = $_GET['type'];
} else {
    echo "Variabila "type" lipseste.<br />";
    exit();
}
echo "Ok.<br />";

Cu Filter:

<?php
$mode = filter_input(INPUT_GET, 'mode', FILTER_VALIDATE_INT);
$type = filter_input(INPUT_GET, 'type', FILTER_VALIDATE_INT, array('options'=>array('min_range'=>3, 'max_range'=>10)));
 
if (is_null($mode)) {
    echo "Variabila mode lipseste.<br />";
    exit();
} elseif ($mode === false) {
    echo " Variabila mode trebuie sa fie o valoare intreaga.<br />";
    exit();
} else {
    echo "mode is: $mode.<br />";
}
 
if (is_null($type)) {
    echo " Variabila mode lipseste.<br />";
    exit();
} elseif ($type === false) {
    echo " Variabila mode trebuie sa fie o valoare intreaga intre 3 si 10.<br />";
    exit();
} else {
    echo "type is: $type.<br />";
}
?>

Cum functioneaza?

Procesul de transformare al input-ului intr-un set de variabile este facut de layerul SAPI. Fara a intra in detalii, layerul SAPI este interfata dintre exterior si motorul PHP. Motorul preia datele externe (ENV, SERVER, COOKIE, GET sau POST ) din SAPI si le transforma in variabile superglobale sau le foloseste in functii precum getenv.

Iata un exemplu de prelucrare a unei cereri POST simple precum: POST /myform.php?myfield=<script>hola</script>

Diagramele de mai jos arata diferenta dintre o operatie normala (rulata pe php 5.1 fara a avea activata optiunea Filter ) si una executata de o versiune php ce include Filter.



Conditii

Filter functioneaza numai pentru versiunile PHP 5.1.0 sau mai recente. Poti verifica daca este instalat cu ajutorul scriptului de mai jos:

<?php
if (function_exists('filter_list')) 
{ 
/* functiile filter sunt instalate*/ 
} else { 
die('Error: Filter nu a fost gasit.'); 
}
?>

Instalare

Versiunile de PHP 5.2.0 sau cele mai recente au deja activata optiunea filter, deci nu necesita instalare. Pentru versiunile mai vechi de PHP, instalarea se poate face in modul urmator:

Unix/Linux:

sau

Windows:

Descarca filter.dll pentru versiunea ta de PHP de pe http://pecl4win.php.net.

Pentru toate platformele, adauga extension=filter.soto in php.ini si restarteaza serverul de web.

Pentru mai multe detalii despre procedurile de instalare PECL trebuie sa citesti manualul php.

Pagina:
1 23 »
comenteaza printeaza
Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(1 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
COMENTARII (1) spune-ti parerea
bogdan bogdan , Joi, 17 Septembrie 2009, ora 16:52
#1

interesant...sunt curios daca nu este mai bine sa se folosesca expresii regulate pentru validarea datelor din formulare..ma refer din punct de vedere al puterii de calcul..ceva idei ?

Raporteaza acest comentariu ca injurios!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
4435
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4335
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4295
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4135
Tutoriale scrise de kheops
kheops Rang utilizator kheops - Mediu
4084
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Illustrator COREL DRAW Fotografie Outlook Flash MySQL XML StyleSheet Sony Vegas JSON SWF Bridge XHTML Swift 3D Word Ruby on Rails PHP Fireworks Powerpoint Gimp Action Script PSD RoR Verilog Excel HTML Python SEO Javascript CSS Dreamweaver Photoshop Vista AJAX Lightroom Java
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software