zoukankan      html  css  js  c++  java
  • WinCE数据库开发时整出来的一个致命的BUG

    在代码中使用了大量像这样的Sql 语句:

    InitializeComponent();
    string s = "select * from tableName where id = ‘"+this.textBox1.Text.Trim()+"'";

    今天看书发现这样写很危险!恶意用户可以凭借这段代码干掉我的数据库!

    比如在textbox1里边输入下边的东西:

    123';drop table Table1--

    之后,Sql语句成了这样:

    select * from tableName where id= '123';drop table Table1—'

    这在SqlServer是完全可以执行下去的。结果是查询了一下,不管有没有找到想要的东西,然后就把表Table1给删掉了!

    后来改了成这样子:

    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = "select * from tableName where id = @id";
    cmd.Parameters.Add("id","12345");
    cmd.ExecuteNonQuery();

    这样就可以避免上边说的那种情况。

    一下子,工作量又来了!

    不过长了点知识,挺高兴的!

    后来查了下,这叫注入式攻击!乖乖,一千年前都有的东西还让我BUG了!

  • 相关阅读:
    使用cordova开发移动app时用form表单的submit时遇到的问题
    收藏链接
    Hibernate总结
    MyBatis基本应用
    Java中字符串(String)总结
    SpringMVC
    SpringIOC----注解
    栈与堆的区别
    IOS模型
    Java Web容器的启动过程
  • 原文地址:https://www.cnblogs.com/zyqgold/p/1661382.html
Copyright © 2011-2022 走看看