Eval este o funcție utilizată în programare . Este prezent în multe limbi interpretate și face posibilă executarea unei comenzi dintr-un șir de caractere (sau Șir) generat de programul însuși executat.
Iată un exemplu în php, aceste două linii sunt absolut echivalente:
$c = 1 + $b; echo $c; eval('$c = 1 + $b; echo $c;');O evaluare printr-un șir de caractere în timpul execuției facilitează:
Deoarece un program care utilizează eval nu poate fi complet compilat (este posibil să aveți nevoie de ceva într-un eval , așa că multe dintre optimizările obișnuite sunt foarte complicate), aceste programe sunt inerent mai lente decât un program compilat. Acest lucru având în vedere că folosim eval fără a fi nevoie, deoarece comenzile rapide de scriere ale acestuia permit o programare mai rapidă.
În ciuda puterii acestei funcții și a posibilităților sale, evalul nu este utilizat pe scară largă. Acest lucru se datorează faptului că utilizarea acestuia face codul mai complex de înțeles și parțial deoarece această funcție este considerată „superfluă” și „murdară”.
Eval este o problemă reală cu securitatea php. Mai ales pentru programele care au acces la date confidențiale. Se recomandă să verificați cât mai mult modul de generare a lanțului care va fi executat.
Un exemplu de atac eval în php :
$input = $_POST['action']; eval($input) cod htmlpermite numai „Conexiune ()” „Deconectare ()” și „Citire ()”
Ataccreați-vă propria pagină html care introduce o altă valoare precum " HidingAccess () "
Protecţieverificați înainte de a rula eval dacă $ input este una dintre valorile permise.
Câteva sfaturi pentru a evita problemele cu eval: