注入条件:(1)用户能够控制数据的输入——在这里,用户能够控制变量ShipCity。
(2)原本要执行的代码,拼接了用户的输入:
var sql = “select * from OrdersTable where
ShipCity = '” + ShipCity + “’”;
这个“拼接”的过程很重要,正是这个拼接的过程导致了代码的注入。
如:
变量ShipCity的值由用户提交,在正常情况下,假如用户输入“Beijing”,那么SQL语句会执行:
但假如用户输入一段有语义的SQL语句,比如:
那么,SQL语句在实际执行时就会如下:
“我们看到,原本正常执行的查询语句,现在变成了查询完后,再执行一个drop表的操作,而这个操作,是用户构造了恶意数据的结果。”
示例结束