I have an idea for preventing sql injection attacks, however it would
have to be implemented by the database vendor.  Let me know if I am on
the right track, this totally off base, or already implemented
somewhere...

Lets say you could have a format string such as in printf

$format=" SELECT %s FROM %s WHERE id='%s' ";
$fieldname="last_name";
$tablename="personel";
$id="425";

and you could execute a query like

mysql_query_formatted($format, $fieldname, $tablename, $id);
(the language would have to have variable argument lengths)

now, the key is that instead of just adding the $fieldname, $tablename,
$id to the $format string and passing it to mysql_query, it would be
passed to the parser as separate strings.  The parser should know how
to handle that format.  That way, the parser would always know where
the different tables names, field names, and other strings start and
end.  So, the problem of injection attacks caused by some one confusing
the parser by entering things like ' and " is gone.

It would be easier on the programmer. There would be no need to worry
about escape characters when passing to this function, the strings
would not have to be escaped..  The parser would no longer have to
guess where the boundaries are.  No more worrying about injection
attacks.

does that make sense?

--
http://www.douglassdavis.com

Reply via email to