Beveiliging met PDO

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert Deiman

Robert Deiman

21/01/2008 13:43:00
Quote Anchor link
Ik ben bezig met een CMS te bouwen die in zijn geheel is opgebouwd met PDO. Nu loop ik daarbij tegen het volgende aan:

In een tutorial vond ik dat je in plaats van mysql_real_escape_string() nu
$rDb->quote($variabele); moet gebruiken. Echter, de query ziet er zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
= "SELECT id FROM table WHERE username = '".$username."' ";
?>

Uiteraard selecteert die ook wel op password, maar dit is even een versimpeld voorbeeld.

Alleen met de quote() functie zet die nu de query zo neer:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT id FROM table WHERE username = ''waarde''


Let op die dubbele enkele quotes. (2 keer 1 quote achter elkaar)
Moet k met de quote functie nu niet meer die enkele quotes in de $sql variabele zetten, en is het dan wel veilig of doe ik nu ergens iets fout?
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
PHP hulp

PHP hulp

22/11/2024 15:32:57
 
Erik Rijk

Erik Rijk

21/01/2008 13:45:00
 
Frank -

Frank -

21/01/2008 13:48:00
Quote Anchor link
Waarom geen bindParam() gebruiken in PDO?
 
Robert Deiman

Robert Deiman

21/01/2008 13:49:00
Quote Anchor link
Hmm... volgens mij kan ik dus de query gewoon zo maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
= "SELECT id FROM table WHERE username = ".$username;
?>


Dan maakt die er wel een goede query van. Vind het wel vreemd overigens.

pgFrank schreef op 21.01.2008 13:48:
Waarom geen bindParam() gebruiken in PDO?

Dat gaat wel gebeuren pgFrank, ik heb een deel al daarheen aangepast. (het komt namelijk van een op puur MySQL gebaseerd script af, die ik helemaal aan het aanpassen ben) Ik was alleen benieuwd hoe dit nu zat, zodat je geen "gevaarlijke" query's kan krijgen.

En als ik dat via bindParam() doe, is het dan wel meteen goed beveiligd.. (dwz dat je niet een query kan creëren met OR 1=1 erin verwerkt?)

Edit:

Oftewel: De enige reden waarom ik dit vraag is om de boel wel goed te beveiligen.
Moet ik dan met bindParam() nog wel de quote() functie eroverheen halen, of is dat daarbij al niet meer nodig?
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
Mr D

Mr D

21/01/2008 14:43:00
Quote Anchor link
dat is dan niet meer nodig
 
Robert Deiman

Robert Deiman

21/01/2008 14:53:00
Quote Anchor link
@Mr D

Kan je ook de/ een bron geven waar ik dat terug kan vinden? Niet dat ik je niet geloof, maar ik zie graag bevestiging.
 
Frank -

Frank -

21/01/2008 14:56:00
Quote Anchor link
Zie de Script-lib. Andere database, zelfde aanpak.
 
Robert Deiman

Robert Deiman

21/01/2008 15:04:00
Quote Anchor link
Ok, dankjulliewel, daar kan ik in ieder geval wat mee en ga de boel meteen aanpassen.

Edit:

Ik ben ook net met PDO begonnen, maar had wel al de prepare enzo gevonden en eerder getest en succesvol gebruikt. Ging me nu puur even om of dat wel meteen al veilig was, om later niet alles om te moeten gooien, wegens beveiligingsproblemen.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.