![]() |
[Alg] Veilig (web)programmeren
beste sm'ers (:D)
ik zit momenteel een beetje met een vraag waar ik niks over kan vinden. Hoe krijg je het voor elkaar dat je scripts/programma's zo veilig mogelijk zijn? Voor het gemak richt ik me op php, om dingen als buffer overflows effe buiten te houden, maar als iemand zich geroepen voelt om t ook daarover te hebben, prima. Wat ik doe op mn php scripts om ze veilig te maken is alle invoer door htmlentities halen met ENT_QUOTES. En ervoor zorgen om in sql query's op te bouwen in de vorm: PHP-code:
|
Ik weet het niet schat. ;)
|
Het gaat niet alleen om de grootheid en complexheid van een site, maar vaak vooral om het feit dat de programmeur niet goed op de hoogte is van de mogelijkheden die hackers hebben of het feit dat de sites waar het kan vaak erg oud zijn.
Ik gebruik in PHP altijd bijvoorbeeld addslashes() om PHP- en SQL-injectie tegen te gaan, maar er zijn genoeg andere manieren waarop een site te hacken is. Sommige sites zijn simpelweg slecht gebouwd en hebben hun security leaks vooral in de slordigheid zitten, maar je kunt natuurlijk ook andere hacktechnieken toepassen dan puur en alleen het hacken dmv. de website. Je kunt ook bijvoorbeeld een server gaan hacken, die moet ook zo secure mogelijk zijn, anders heb je niets aan je maatregelen op de website. Ik ben bijvoorbeeld ook genoeg sites tegengekomen waar de passwords in een MD5 hash open en bloot in een losse folder staan. Als je er dan achter komt welke folder dat is, kun je de wachtwoorden heel gemakkelijk kraken. Maar ook heb je soms sites met bepaalde "features" waarmee je een PHP script kunt showen in je browser. Soms houdt een programmeur bij 2 verschillende dingen geen rekening met het ander en dan gaat hij nog wel eens de mist in. |
Citaat:
Citaat:
Toch vertrouw ik t niet, ik heb t gevoel dat er meer is, ik weiger te geloven dat je met simpele input filters alles kan voorkomen. Dat kan iedere naab wel, en toch worden zelfs banken gehax0rd :p |
Citaat:
Citaat:
|
|
altijd de userinput controleren
idd bij SQL altijd de dingen escapen, zie eventueel ook de manual (tip: geef ook de resource link_identifier mee, want sommige DB's hebben andere charset, waardoor de functie nog geen zin zou kunnen hebben) nooit een functie zo gebruiken: PHP-code:
PHP-code:
En dit is ook leuk: PHP-code:
PHP-code:
Wees creatief met je inputvelden, kijk eens wat je zou kunnen uitvreten, en daarna bouw je controle moment in, want zolang je de userinput op alle mogenlijke manieren checkt+beveiligd, is het grootste probleem opgelost! link naar goede documentatie hierover |
hmm, en hoe zit t dan met dit soort "truukjes"
Code:
Let's use some trick for bypassing any eventual gpc_magick_quotes setted to On (did you hackproof @dafelix daar is mijn topic een beetje op gebasserd, op de link die je gaf :) |
Als je input weer in HTML gaat weergeven kan het ook geen kwaad om bijvoorbeeld htmlspecialchars() te gebruiken zodat niet alle HTML klakkeloos wordt weergegeven.
|
1) zoals manuz zegt, alles wat op het scherm komt uit de database loods ik bijna altijd door een htmlentities() filter, deze zal alle codes HTML-safe maken maar ook karakters als & omzetten naar & amp; zodat de code charactermap-compliant wordt zodat je (X)HTML als correct gevalideerd wordt.
2) als je een integer variabele in een query wilt opnemen, gebruik van type casting: PHP-code:
3) gebruik geen magic_quotes_gpc of als je project op meerdere servers moet kunnen draaien, gebruik een functie zoals safegpc: PHP-code:
PHP-code:
Geinig, toch? :cool: |
Alle tijden zijn GMT +1. Het is nu 04:11. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.