hoe beveilig ik mijn website tegen sql injecties?

bvd

Weet jij het antwoord?

/2500

Alle post en gets escapen.

Dat is erg pittig om 'zo maar even' te doen. Er is erg veel literatuur over verschenen, en mijn favorite cheat sheet is van OWASP. Eerste lijn te verdediging:: Option #1: Use of Prepared Statements (Parameterized Queries) Option #2: Use of Stored Procedures Option #3: Escaping all User Supplied Input Tweede lijn: Also Enforce: Least Privilege Also Perform: White List Input Validation Zelf eis ik altijd een combinatie van: Optie 2 doe in de database. Je slaat daar alle SQL opdrachten op, die je [met parameters uit je] website aanroept. Daardoor wordt er geen SQL vanaf ej website naar je DB gestuurd en is het dus simpel om te voorkomen dat iemand SQL kan injecteren. Optie 3 zorgt er voor dat er geen 'vreemde' input van je website naar de DB gestuurd wordt en als dat toch voorkomt, dat er een sanity check plaats vindt voordat het wordt uitgevoerd. De tweede lijst zijn extra goede beheer maatregelen zoals het laten werken van jouw front & backend software met de absoluut minimale rechten die het nodig heeft om te werken maar helemaal niets extra's kan doen. Plus het alleen maar accepteren van parameters die jij van te voren hebt goed gekeurd. Check ajb de link die hier onderstaat, het zal je veel ellende schelen als je de concepten begrijpt & implementeert.

Bronnen:
https://www.owasp.org/index.php/SQL_Inject...

Wiki: Door middel van het geven van de minimaal noodzakelijke rechten zal het ongewenst aanpassen van de gegevens vermeden worden. De injectie met SQL-code kan eenvoudig tegengegaan worden door het juist verwerken van informatie die door een gebruiker wordt aangeleverd. In de programmeertaal PHP kan dat bijvoorbeeld via mysql_real_escape_string(). Deze functie vangt (my)SQL specifieke karakters af door er een backslash (\) voor te plaatsen. Hierdoor weet het systeem dat enkel het letterteken bedoeld wordt, en niet meer de scheidende functie van het afbakenen van gegevens. Een stukje voorbeeld-programmeertaal in PHP kan er als volgt uitzien: Een andere methode om injectie tegen te gaan is door middel van een voorgedefinieerd statement. Hierbij wordt in het aanroepende programma het statement opgebouwd met een variabele. De inhoud van de variabele wordt dan gekoppeld aan de gebruikersinvoer. Bijvoorbeeld (in de taal Java): In plaats van Connection con = (maak verbinding met de database) Statement stmt = con.createStatement(); ResultSet rset = stmt.executeQuery("SELECT * FROM persoon WHERE achternaam = '" + invoer + "';"); is het beter om het volgende te gebruiken Connection con = (maak verbinding met de database) PreparedStatement pstmt = con.prepareStatement("SELECT * FROM persoon WHERE achternaam = ?"); pstmt.setString(1, invoer); ResultSet rset = pstmt.executeQuery();

Stel zelf een vraag

Ben je op zoek naar het antwoord op die ene vraag die je misschien al tijden achtervolgt?

/100