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是存储过程中的的?