• 【2017-04-20】Sql字符串注入式攻击与防御


    一、攻击

    所谓sql字符串注入式攻击就是在用户输入界面输入一串sql语句,来改变C#中连接数据库要执行的sql语句

    通过你写的程序,直接来执行我想要执行的sql语句

    例如:在这么一个程序中,sname是需要用户输入的内容。

    在用户输入界面输入  a');update Student set Sname ='赵四';--

    本来是往Student表中添加学生信息,则变成了把所有的信息改成了赵四。

    原理:用户输入的代码将c#中的sql语句中的sname替换掉了,就变成了下边的黑客想执行的sql语句。

    insert into Student values('"+sno+"','a');update Student set Sname ='赵四';--')

     二、防御

    将C#中操作数据库执行的sql语句中的字符串拼接换成占位符。

    还是上边的例子:

    在防御之后再用之前的放法进行攻击

     用占位符进行防御之后不会改变表的其他内容,会将这句代码原封不动的存到数据库中而不会改变c#中的sql语句。

     

    注意:sql语句中带模糊查询的防御方法

    将'%哈哈%'  全部用占位符占位。例子如下:

    cmd.CommandText = "select*from Subject where SubjectName like @a";
    cmd.Parameters.Clear();
    cmd.Parameters.AddWithValue("@a","%"+subname+"%");

    警告:该内容仅限学习交流,不要轻易尝试,闹不好没黑进去,会留下痕迹小心查水表!!!

  • 相关阅读:
    c++程序—冒泡排序法(函数、指针)
    c++程序—统计成绩
    c++程序—冒泡排序法
    c++程序—逆置
    c++程序—五只小猪称体重
    c++程序—goto
    c++程序—乘法表
    c++程序—循环嵌套
    RGB保存 .bmp文件踩坑记
    vdi文件扩容
  • 原文地址:https://www.cnblogs.com/qq609113043/p/6740737.html
Copyright © 2020-2023  润新知