Brian Moon wrote: > Mathieu CARBONNEAUX wrote: >> but i think some good security idea have been said, for exemple using >> "prepare statement" to avoid sql injection... > > We really need to stop spreading this myth that prepared statements are > a security measure. Prepared statements only allow passing of the value > parts of where clauses and a couple of other parts of the query. Limit > values would be the most common thing in a query that use variables but > are the not allowed to be prepared. I have also seen plenty of > applications that use variables for the table names, field names, order > by, and other parts. Prepared statements help with none of those. > Prepared statements protect very little against sql injection. Making > people believe otherwise is dangerous. >
Limits, table names, and several other query parts are protected by MediaWiki's query builder. A complex select query might look like this: $result = $db->select( # Tables array( 'user', 'revision' ), # Fields array( 'user_name', 'rev_timestamp' ), # Conditions (WHERE) array( 'user_id=rev_user', 'rev_page' => $page_id ), # Query tag, goes into a comment in the SQL __METHOD__, # Options array( 'LIMIT' => 10, 'ORDER BY' => 'rev_timestamp DESC', ) ); It even has some degree of DBMS-independence, thanks to creative interpretation of the options parameter. This is what I would like to see in the PHP core. -- Tim Starling -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php