PHPhulp
 
 
Header image
Username: Password:   registreren | wachtwoord kwijt
 


PHP Tutorials

Eval() is gevaarlijk

Berekeningen met eval() zijn niet altijd veilig

Print versie PHP tutorial


Door SanThe op 29.12.2009 18:09

 



Reacties

Voeg ook een reactie toe.

Nibulez schreef op 29.12.2009 18:31
Natuurlijk is eval(); gevaarlijk, je voert dan regelrecht een php code uit, je kan zorgen dat dit veilig gebeurt maar als iemand hier toch een lek in vind dan ben je screwed.

GaMer13 schreef op 29.12.2009 18:41
Sticky deze tutorial... Eval behoor je eigelijk voor zulke zaken nooit te gebruiken...

Boaz schreef op 29.12.2009 23:05
Belangrijk punt, zeker voor beginners. Toch is eval hier niet het probleem maar user input validatie imho.

Blanche schreef op 30.12.2009 14:38
Ik ben het helemaal met Boaz eens dat eval() hier niet het probleem is. Eval() is net zo gevaarlijk als de beperktheid van de kennis van de gebruiker ervan en daarom is deze korte tutorial goed!

Mensen die roepen dat eval() een slechte functie is die je nooit moet gebruiken, moeten zich misschien toe eens afvragen of die mening wel gegrond is. Als je weet wat je doet kan het zijn dat eval() op een gegeven moment een oplossing biedt (alhoewel ik het zelf nog nooit gebruikt heb). Het advies is dan ook niet 'niet gebruiken' maar 'pas op met het gebruik'...

SanThe schreef op 30.12.2009 14:45
@Blanche: Het advies is dan ook niet 'niet gebruiken' maar 'pas op met het gebruik'...

Dat is ook mijn mening. Maar zoals je zelf waarschijnlijk ook regelmatig hebt gezien wordt vaak de input klakkeloos in de eval() gezet. En dat gaat gewoon op een keer fout. Vandaar dit stukje schrijven.

Revolution is coming schreef op 30.12.2009 15:00
Eval zelf is totaal ongevaarlijk. Maar als je het icm met user input gebruikt is het wel gevaarlijk, maar dat is sql zonder validatie ook als er user input wordt gebruikt.
Je moet iig zorgen dat je eval zo min mogelijk gebruikt om deze reden en omdat het redelijk traag is. Probeer altijd een omweg te zoeken door op één of andere manier met een functie te werken die aangeroepen wordt.

Blanche schreef op 30.12.2009 15:20
@SanThe: dat bedoel ik ook met mijn post. Ik ben blij dat je het opgeschreven hebt, dit is zeker handig voor beginners! :)

Niborx schreef op 30.12.2009 15:48
Eval is niet gevaarlijk, je moet gewoon je get/post data filteren?

Nibulez schreef op 30.12.2009 19:53
@Niborx:
En als een gebruikers of hacker toch een manier vind zodat die filtering geen nut heeft?

steen schreef op 30.12.2009 20:08
Gewoon geen eval gebruiken zou ik zeggen, is nergens écht voor nodig.

 Selecteer deze code
1
2
3
4
<?php
unlink
();
// als je maar rechten genoeg hebt...
?>


Gewijzigd op 30.12.2009 20:10 door steen

Nibulez schreef op 01.01.2010 20:20
Wat trouwens ook kan gebeuren en waar je bijna niks tegen kunt doen is dat de gebruiker functies uit kan voeren, chmodden, bestanden verwijderen etc.

Blanche schreef op 02.01.2010 09:46
Nibulez
Wat trouwens ook kan gebeuren en waar je bijna niks tegen kunt doen is dat de gebruiker functies uit kan voeren, chmodden, bestanden verwijderen etc.
Dit is wederom een kwestie van het controleren van user input en heeft dus meer daar mee te maken dan met de functionaliteit van eval() zelf.

Het is dus ook onzin dat je daar 'bijna niets tegen kunt doen'. Het kan juist heel eenvoudig: controleer alle user input goed.

Gewijzigd op 02.01.2010 09:46 door Blanche

steen schreef op 02.01.2010 12:34
Geef één voorbeeld waarbij het noodzakelijk is om eval te gebruiken? Volgens mij zijn er altijd andere oplossingen.

Karl schreef op 02.01.2010 13:15
steen schreef op 02.01.2010 12:34
Geef één voorbeeld waarbij het noodzakelijk is om eval te gebruiken? Volgens mij zijn er altijd andere oplossingen.

Inderdaad, volgens mij zijn het voornamelijk situatie's waar de scripter te 'lui' is om 'ingewikkelde' oplossingen te maken.
Ik gebruik eval alleen voor een testscriptje, zodat ik niet een nieuwe pagina aan hoef te maken.

Blanche schreef op 02.01.2010 13:19
Geef één voorbeeld waarbij het noodzakelijk is om eval te gebruiken? Volgens mij zijn er altijd andere oplossingen.
Zoals ik eerder al zei: ik ben zelf nog nooit zo'n situatie tegengekomen en vraag me ook af of ik het ooit nodig zal hebben.

Maar dan nog, men roept al heel snel dat bepaalde functies niet gebruikt moeten worden zonder daar enige correcte argumentatie voor te geven. Dat is waar ik over val, niet het gebruik van eval().

Nibulez schreef op 15.01.2010 13:27
Dit is wederom een kwestie van het controleren van user input en heeft dus meer daar mee te maken dan met de functionaliteit van eval() zelf.

Het is dus ook onzin dat je daar 'bijna niets tegen kunt doen'. Het kan juist heel eenvoudig: controleer alle user input goed.


Hoe wil je user input controleren op functies, je kan niet elke functie weg gaan filteren, daarnaast kun je zelf ook nog functies maken.

Gewijzigd op 15.01.2010 13:29 door Nibulez

Edoxile schreef op 15.01.2010 14:04
@Nibulez
Nee, dit kan inderdaad niet, maar je kan wel controleren voor alles wat wel mag. Bijvoorbeeld bij berekeningen, kan je filteren op alle functies die men wel mag gebruiken (denk aan abs(), sqrt(), pow(), sin(), cos() en tan()). Als er dan iets anders in zit, kan je een error teruggeven. Dat is veel sneller dan alles wat men niet mag gebruiken controleren. Verder zou je bij berekeningen intval() kunnen gebruiken, als het om numerieke functies gaat. Dan kan iemand nooit iets met een functie beginnen.

Daniel schreef op 29.01.2010 12:27
Het gaat hier toch niet perse om eval() user input moet je altijd controleren op escapen.

Voeg een reactie toe

Alleen leden mogen reacties toevoegen. Dit i.v.m. het vele spam die we de laatste tijd hebben gekregen. Je kunt je registreren op de registratie pagina. Ben je al lid? Dan kun je inloggen aan de bovenkant van de website.

Ga naar het overzicht met PHP tutorials.

tracker Laatste PHP tutorials

10.02
30.01
22.01
19.01
30.12

tracker Laatste PHP scripts

04.02
31.01
30.01
30.01
30.01

tracker Laatste PHP boeken

03.11
04.10
04.05
11.03
03.08

tracker Laatste forum berichten

13:24
13:24
13:24
23:04
19:07
19:04
14:41
14:06
14:06
13:41
11:29
10:15

tracker Laatste reacties

13:27
Hoe kun je inlogge.. (PHP tutorial)
13:27
Hoe kun je inlogge.. (PHP tutorial)
13:27
Hoe kun je inlogge.. (PHP tutorial)
13:27
Hoe kun je inlogge.. (PHP tutorial)
13:27
Hoe kun je inlogge.. (PHP tutorial)
13:27
Hoe kun je inlogge.. (PHP tutorial)
13:27
Hoe kun je inlogge.. (PHP tutorial)
13:27
Hoe kun je inlogge.. (PHP tutorial)
13:27
Hoe kun je inlogge.. (PHP tutorial)
13:27
Hoe kun je inlogge.. (PHP tutorial)

PHP zoeken PHP zoeken

 Zoekterm

Zoeken in

tracker Voting poll

 Welke browser heeft jouw voorkeur?

Google Chrome
Mozilla Firefox
Internet Explorer
Apple Safari
Opera Software
Een andere browser


tracker Actieve leden

 
 Er zijn 41 gasten en 4 leden actief.
Actieve leden: peter-jan@blitz.nu, Arjen Halma, Marco, Wieland