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

  • 相关阅读:
    冲刺4
    冲刺3
    冲刺2
    冲刺一
    构建之法阅读笔记04
    数组02开发日志
    进度条第七周
    《构建之法》阅读问题
    软件工程概论第一节
    《大道至简》弟七八章读后感
  • 原文地址:https://www.cnblogs.com/jhqx/p/4669838.html
Copyright © 2020-2023  润新知