declare @user varchar(10),@password varchar(10)
select @user='liangCK',@password='123456789'exec ('select * from user_info where user='''+@user+''' and password='''+@password+'''')--如果我在参数@password里加上 or 1=1select @user='liangCK',@password='123456789'' or 1=1'exec ('select * from user_info where user='''+@user+''' and password='''+@password+'''')

解决方案 »

  1.   

    应该这样.declare @user varchar(20),@password varchar(20)
    select @user='liangCK',@password='123456789'print ('select * from user_info where user='''+@user+''' and password='''+@password+'''')--如果我在参数@password里加上 or 1=1select @user='liangCK',@password='123456789'' or 1=1;--'print ('select * from user_info where user='''+@user+''' and password='''+@password+'''')
      

  2.   

    --在这里使用Northwind库的Orders表作测试declare @OrderID varchar(10),@CustomerID varchar(20)
    select @OrderID='10248',@CustomerID='VINET'exec ('select * from Orders where OrderID='+@OrderID+' and CustomerID='''+@CustomerID+'''')
    --这里输出一行
    --然后如果我在参数@CustomerID里加上 or 1=1select @OrderID='10248',@CustomerID='VINET'' or 1=1;--'exec ('select * from Orders where OrderID='''+@OrderID+''' and CustomerID='''+@CustomerID+'''')
    --这里就把所有都显示出来了.
      

  3.   

    --在这里使用Northwind库的Orders表作测试declare @OrderID varchar(10),@CustomerID varchar(50)
    select @OrderID='10248',@CustomerID='VINET'exec ('select * from Orders where OrderID='+@OrderID+' and CustomerID='''+@CustomerID+'''')
    --这里输出一行
    --假如有更坏的人.把你的Orders表给删除select @OrderID='10248',@CustomerID='VINET'';drop table Orders;--'exec ('select * from Orders where OrderID='''+@OrderID+''' and CustomerID='''+@CustomerID+'''')
      

  4.   


    //简单的,比如验证用户名和密码:// 情况1,合法的输入
    string username = "name1";
    string pwd = "abc";
    string sql = "select * from userinfo where username='" + username + "' and pwd='" + pwd ;//打印出来的sql语句 
    // select * from userinfo where username='name1' and pwd='abc'// 情况1,sql注入
    string username = "1' or '1'='1";
    string pwd = "1' or '1'='1";
    string sql = "select * from userinfo where username='" + username + "' and pwd='" + pwd + "'";
    //打印出来的sql语句 
    // select * from userinfo where username='1' or '1'='1' and pwd='1' or '1'='1'
    // 这就绕过验证了