Skydda mot URL-injektion med TryParse

Har precis som Mads Kristensen märkt av att attacker med URL-injektioner har ökat det senaste.

På en sajt har jag fått in anrop som ser ut ungefär som här:

http://www.examplesite.com/product.aspx?categoryid=0 and user>0
http://www.examplesite.com/product.aspx?categoryid=0 ' and user>0 and ''='

URLerna är påhittade men på slutet av dem ser ni hur roboten lägger till extra strängar i parametern. Jag hade inte tänkt på att skydda mot detta och det blev error när sidan försökte konvertera parametern till en integer.

För att undervika fel kan man använda TryParse istället för Convert.ToInt32 (om man nu vart lika oförsiktig som jag från början).

int categoryId = -1;
Int32.TryParse(Request.QueryString["categoryid"], out categoryId);

Läs mer på MSDN eller i kommentarerna till ett inlägg hos CodeBetter.com.