login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Veilig?

Offline Abbas - 02/09/2008 03:18 (laatste wijziging 02/09/2008 03:20)
Avatar van AbbasGouden medaille

Crew .NET
Ik kan redelijk wat PHP en dus ook invoer verwerken in PHP, maar ik vroeg me af hoe je eigenlijk op een echt veilige manier je invoer kan verwerken om deze te plaatsen in een DB of om gewoon weer te geven, maar vooral dat eerste. Hiermee bedoel ik dus wat je allemaal moet doen met $_POST om deze zaken tegen te gaan:
- JavaScript
- SQL Injection
- Quotes en dergelijke

Je snapt wel wat ik bedoel. Naar mijn vermoeden is enkel htmlentities() niet genoeg...

Alvast bedankt!

7 antwoorden

Gesponsorde links
Offline Stijn - 02/09/2008 03:29
Avatar van Stijn PHP expert htmlentities gaat al die speciale tekens als quotes en < > in hun HTML entity plaatsen. Dan worden alle script tags niet uitgevoerd maar gewoon op het scherm geplaatst. Als je het veilig wilt spelen, kan je ook eerst de quotes escapen om tegen SQL injection beschermd te zijn. Als je al htmlentities gebruikt zijn je quotes zowiezo al niet veel meer waard in SQL injection. Nu ben ik niet zo'n expert in de hacks van PHP maar dit is mijn ervaring en werkt goed.
Offline Abbas - 02/09/2008 03:32
Avatar van Abbas Gouden medaille

Crew .NET
Dus als ik het goed begrijp doe je bijvoorbeeld zo:
  1. $safe = htmlentities(addslashes($_POST["invoer"]));
Offline Stijn - 02/09/2008 03:36
Avatar van Stijn PHP expert Ik doe enkel htmlentities. Als je een quote escaped zal die ook op de website escaped staan. Je zou zeggen om PHP.net: stripslashes te gaan gebruiken. Maar die herkent geen quotes in HTML entities, dus je slashes blijven staan.
Offline Abbas - 02/09/2008 03:38
Avatar van Abbas Gouden medaille

Crew .NET
Ok, nu kan ik weer verder, bedankt! Als er nog iets is laat ik het wel weten.. 
Offline Koen - 02/09/2008 20:30
Avatar van Koen PHP expert Dat javascript heet eigenlijk XSS (Cross Site Scripting) 
Offline Martijn - 02/09/2008 20:48
Avatar van Martijn Crew PHP ik heb gewoon een functie die html entities, mysql_real_escape, trim uitvoert. Dan gebruik ik overal maar 1 functie ipv dat ik ze steeds allemaal moet typen.
En voor getallen heb ik een functie die alles wegfilterd behalve getalen, dus dan blijven er alleen getallen over die dingen moeten doen
Offline flyingdragon - 02/09/2008 20:50 (laatste wijziging 02/09/2008 20:53)
Avatar van flyingdragon PHP beginner bovenstaande, en pdo gebruiken (parameters), neem je het risico op SQL injection ook grotendeels weg. (quotes worden gewoon in de database gegooid), wanneer je het ook gebruikt om alle data weer uit de database te halen wordt het ook 1 op 1 weer eruit gehaalt 

dus html entities gecombineerd met pdo & parameters,
berschermd volgens mij wel tegen de meeste ongein (javascript, sqlenjection)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.181s