sql = "SELECT username, password "
sql = sql & " FROM users "
sql = sql & " WHERE userId = '"& request.querystring("userId") &"';"
rs.open sql, db
if not rs.eof then
do while not rs.eof
response.write(rs("username") &";"& rs("password") & chr(13))
rs.movenext
loop
end if
Ovanstående kod är som synes helt oskyddad mot sql-injections. Om t.ex:
request.querystring("userId") = "1' or 1=1'"
så får jag ut en massa användare. Om jag däremot vill göra något annat dumt, tex drop table, så försökte jag med följande:
request.querystring("userId") = "1'; drop table documents; select * from users where username like '%"
Med ovanstående kod får jag ett felmeddelande: A trappable error (C0000005) occurred in an external object. The script cannot continue running.
Om jag istället kör sql-queryin som genereras ovanför och kör den i Php-myadmin så raderas tabellen documents korrekt. Min fråga - varför går detta ej att göra direkt i webbläsaren?