数据库2012终于知道数据库攻击注入参数

update Employ set salary =50000 where id=5;

瞎搞攻击数据库

update Employ set salary=150000 where FirstName='John' and LastName='Doe';

Update Employ set salary =50000 where id=5;

这样既满足了数据库中要执行语句的要求也达到了足智多谋的目的,这就是所谓的攻击注入

如何防攻击呢?

第一个有标准化形式    需要用户输入的部分已经用占位符@name的形式命名好,在传递给数据库之后,这一元素会被类型专有的最终值所替代。

@的作用   在为参数准备语句时,所有最终将被参数值替代的元素都会用一个“@”标识符所替代

UPdate Employee set Salary=@NewSalary where id=@EmployeeID;//id将会被参数值替代

我们所需要的参数都包装在sqlParameter的实例中,根据需要设置其属性,并把它添加到SqlCommand.Paramters.在执行这个命令时,ADO.net将加载占位符的SQL文本和参数集合都传递给数据库进行求值。 每个占位符都包含所期待的元素:参数名(他的长度与SQL语句中的占位符名称匹配)。

最重要的一句就是:要像命令中添加一个参数,就可以创建一个SqlParameter实例,并把它添加到SqlCommand对象。

例如,

paramValue=new SqlParameter("@EmployID",SqlDType.BigInt);

paramValue=25L;

salaryUpdate.Parameter.Add(paramValue);

既然有salaryUpdate.Parameter.Add(paramValue)  salaryUpdate是存储过程中的的?

posted on 2015-07-23 11:06  静海晴心  阅读(199)  评论(0编辑  收藏  举报