Eval er en funktion, der bruges til programmering . Det er til stede i mange fortolkede sprog og gør det muligt at udføre en kommando fra en tegnstreng (eller streng) genereret af selve programmet , der udføres.
Her er et eksempel i php, disse to linjer er absolut ækvivalente:
$c = 1 + $b; echo $c; eval('$c = 1 + $b; echo $c;');En evaluering gennem en tegnstreng under udførelse gør det let at:
Da et program, der bruger eval, ikke kan kompileres fuldstændigt (du har muligvis stadig brug for noget i en eval , så mange af de sædvanlige optimeringer er meget komplicerede), er disse programmer iboende langsommere end et kompileret program. Dette i betragtning af at vi bruger eval uden behov for det, fordi dets genveje til skrivning muliggør hurtigere programmering.
På trods af kraften i denne funktion og dens muligheder, bruges eval ikke meget. Dette skyldes, at dens anvendelse gør koden mere kompleks at forstå og delvis fordi denne funktion betragtes som "overflødig" og "beskidt".
Eval er et reelt problem med php- sikkerhed . Især til programmer, der har adgang til fortrolige data. Det tilrådes på det kraftigste at kontrollere så meget som muligt den måde, hvorpå den kæde genereres, som vil blive udført.
Et eksempel på et eval angreb i php :
$input = $_POST['action']; eval($input) html- kodetillader kun "Connection ()" "Disconnection ()" og "Read ()"
AngrebOpret din egen html-side, der indtaster en anden værdi som " HidingAccess () "
BeskyttelseKontroller inden du kører eval at $ input er en af de tilladte værdier.
Nogle tip til at undgå problemer med eval: