Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/
Heart..pumps blood.Has nothing to do with emotion! Bored
"Beauty is the ultimate defence against complexity." David Gelernter
Ik heb een database module geschreven welke het voor me zelf wat makkelijker te maken. Verder te noemen $db
$db heeft een subroutine die een query als string neemt en deze naar de DBI:mysql driver stuurt.. Hier gebeurd ook alle standaard check (is de database handle actief, fouten opvangen e.d.)
Elke keer wanneer ik een query ergens maak, maak ik deze als volgt:
$query = sprintf("SELECT * FROM `table` WHERE `text_fld` = %s AND `int_fld` = %d", $db->quote_string($txt), $int);
quote_string is de escape functie, deze doet niet meer dan het invoken van 'quote' op de database handle.
Dit alles leek mij een goede manier, zeker mbt mysql injections. Het tegenargument was, dat je dit maar 1x hoeft te vergeten om een injection flaw te hebben. Mijn argument was dat je gewoon goed moest programeren, maar dat was niet goed genoeg.
Het is echt een accountant welke deze review gedaan heeft (Het was geen audit, het was alleen gezien tijdens een kleine 'show' van de broncode van een applicatie)
Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/
Heart..pumps blood.Has nothing to do with emotion! Bored
Verwijderd
Dat is vreemd. Ik kan namelijk geen situatie verzinnen waarin een fout in een programma geen gevolgen heeft voor de veiligheid ervan.Keiichi schreef op vrijdag 28 maart 2008 @ 09:41:
[...]
Dit alles leek mij een goede manier, zeker mbt mysql injections. Het tegenargument was, dat je dit maar 1x hoeft te vergeten om een injection flaw te hebben. Mijn argument was dat je gewoon goed moest programeren, maar dat was niet goed genoeg.
Als ik jou was, zou ik de accountant om opheldering vragen. Als hij geen oplossing heeft, lult hij maar wat in de ruimte. Heeft hij wel een oplossing, laat het hier dan weten, we zijn zeer benieuwd!
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Een voorbeeldje die ik gezien heb is:
$sth = $dbh->prepare("SELECT email, userid FROM members WHERE email = ?;");
$sth->execute($email);
Dit zou de truc moeten klaren.
Ik heb nooit gezegd dat de accountant geen gelijk had. Als ik dacht dat ie zeker te weten ongelijk was, dan had ik nooit de vraag hier gesteldJanoz schreef op vrijdag 28 maart 2008 @ 09:49:
Je wilt het misschien niet horen, maar imho heeft de accountant wel gelijk. Misschien is het een idee om eens naar geparameteriseerde queries te kijken.
[ Voor 50% gewijzigd door Keiichi op 28-03-2008 10:03 ]
Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/