29.června 2008

PC a internet SQL injection v ASP - řešení

Potřebuji vyřešit problém s SQL injection na jedné webové aplikaci. Přišlo mi to jako samozřejmá věc a ejhle, něco mi prostě uniká. Mám následující kód:


dim conn1
set conn1=myConnectionOpen("myDatabase")

dim cmd
set cmd=Server.CreateObject("ADODB.Command")
cmd.ActiveConnection=conn1

cmd.commandtype=1
cmd.commandtext="SELECT TOP 1000 * FROM clanky WHERE (Autor LIKE ('%' + @autor + '%'))"

cmd.parameters.append cmd.createparameter("@autor",129,1,70,"Hla")

set rs=cmd.execute

rs.close
set rs=nothing

set cmd=nothing
conn.close
set conn=nothing

Při spuštění mi to hlásí na červeném řádku Must declare the variable '@autor'.

Domníval jsem se, že to dělám o řádek víš, ale něco mi asi uniká. Poradíte někdo prosím?


Aktualizace - řešení

Tak po mnoha dnech hledání a konzultování jsme dospěli k názoru, že výše zmíněný příklad bude fungovat (asi) pouze pro uložené procedury. Pro akční SQL dotazy je potom funkční řešení následovné:


dim conn1
set conn1=myConnectionOpen("myDatabase")

dim cmd
set cmd=Server.CreateObject("ADODB.Command")
cmd.ActiveConnection=conn1

cmd.commandtype=1
cmd.commandtext="SELECT TOP 1000 * FROM clanky WHERE (Autor LIKE ('%' + ? + '%'))"

set rs=cmd.execute(, array("Hla"))

rs.close
set rs=nothing

set cmd=nothing
conn.close
set conn=nothing

Zajímavé je, že v ADO.NET první zmíněný příklad (mírně upravený do .NET) funkuje i pro akční dotazy.


Hledáte-li správce sítě nebo prostě nekoho kdo umí spravovat servery, hledejte na www.petr-hladis.cz

Přečteno: 3069x | Komentářů: 1x | Kategorie: PC a internet

Komentáře čtenářů

1. GRAVATAR - advarve@benjaminmail.xyzadvarve22. 4. 2023 7:01:00
This affects the clinical outcome of TAM treatment <a href=http://buycialis.skin>generic cialis online</a>

Přidat vlastní komentář k článku



Z důvovů ochrany proti spamu prosím do následujícího políčka napište texy "NOSPAM":

Chcete-li ke komentáři přidat svou fotku nebo jinou ikonku, postupujte podle návodu.


TOPlist

[CNW:Counter]