![]() |
[PHP] Optimale beveiliging
Iedereen streeft naar een optimale beveliging van zijn of haar PHP-scripts (tenminste, dat mag ik toch hopen). Maar hoe realiseer je een zo veilig mogelijk script? Ja, je kan bovenin het PHP-bestand een exit; plaatsen, dan is hij inderdaad veilig, maar niet echt gebruiksvriendelijk.
Nu komt mijn vraag: Waarop moet ik allemaal extra letten bij de beveiliging van mijn pagina's? SQL-query's moet je natuurlijk beveiligen met de mysql_real_escape_string()-functie, maar aan wat voor dingen moet ik nog meer denken? |
variabelen initialiseren.
|
Citaat:
|
de #1-rule is toch wel:
Never trust user input |
Citaat:
Maar hoe kan je dit soort invloeden het beste beveiligen? M.a.w., welke functies zijn het meest geschikt en op welke manier? |
htmlentities() is wel goed bruikbaar: je wil geen malafide HTML/JavaScript in ingezonden text/code hebben. Verder zorgen dat als je includes op .inc eindigen ook daadwerkelijk aan PHP gerelateerd zijn zodat de source niet openstaat, en gewoon in het algemeen je user input heel erg goed checken. Er zijn weinig specifieke regels te bedenken omdat het toch erg van je applicatie afhangt.
|
Citaat:
++c; ipv int c; ++c; in hoeverre dit bij php nodig is, weet fade of light beter dan ik. :p |
In PHP hoef je variabelen niet te declareren of te typecasten, maar het initialiseren van variabelen is wel heel netjes, maar niet altijd nuttig. Als Register Globals UITstaat zoals dat braaf hoort, zie ik het nut van variabelen initen niet echt in, de gebruiker heeft er dan geen enkele invloed op. Behalve als je met user input gaat werken natuurlijk, maar dat spreekt voor zich. Als je je houdt aan het escapen van strings in SQL queries, Register Globals uitschakelt en de gouden regel onthoudt (zie eddie) dan ben je in principe een heel eind.
Dat je moet oppassen met exec() spreekt verder voor zich. |
Citaat:
|
|
Wat is de beste (veiligste manier) om een string te escapen (ed) om 'm veillig in een database weg te stoppen?
|
Citaat:
PHP-code:
PHP-code:
In de functie kijk ik wat voor soort string het had moeten zijn en die controleer ik vervolgens. Daarna stuur ik de string weer terug. |
Wow.. da's wel heel grondig :D
Ik pass alleen strings door naar m'n db, dus in principe kan ik dan volstaan door mysql_real_escape_string($string) te gebruiken? (wat doet de functie precies (ik snapte de uitleg op php manual niet :bloos: )) |
Citaat:
|
het ziet er leuk uit hoe je programmeert maar mijn doel blijft toch om zo snel mogelijk te programmeren, beveiliging komt altijd wel goed :p
|
Citaat:
Safety first! |
Citaat:
|
Citaat:
Citaat:
En natuurlijk netjes alles bewijzen met GCL! :evil: |
ieuw, hoorde ik daar gcl?
|
Nee dat las je. Wat is dat GCL?
|
Citaat:
Exo: GCL = guarded command language, een of andere schrale semiprogrammeertaal waarmee je de correctheid van standaardalgoritmen kunt bewijzen. Nadat je dit hebt gelezen, kun je het maar beter weer vergeten :P |
Citaat:
|
Alle tijden zijn GMT +1. Het is nu 22:51. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.