本人新手,第一次做商城类网站有很多地方都不太懂
主要是订单这里,3各表,购物车表,订单表,订单详细表
付款页面,点击付款(1)生成订单号,订单号=当前时间+订单表的行数(2)对订单表插入数据(3)对订单详细表插入数据(4)更改购物车里一列,让数据不在显示【这里不知道是删除好,还是隐藏起来好】(5)跳转到选择付款方式页面
这些按照次序都在一个Button1_Click里面完成,不知道这样写对不对,在这里应该做一些什么保险措施另外对数据操作上
OracleConnection conn = new OracleConnection(ConnectionString);
string str = "select * from usertable where name='"+ TextBox1.Text.Trim() +"' and pwd='"+ TextBox2.Text.Trim() +"'";
 OracleDataAdapter da = new OracleDataAdapter(str,conn);
        DataSet ds = new DataSet();
        da.Fill(ds);
全都是这样写的,这是不是就叫做“拼凑SQL”,很容易造成注入性攻击?别人说写成存储过程可以杜绝大部分的注入性攻击。如果一定要用这种“拼凑SQL”的方式应该怎样做防止注入性攻击在51aspx这个网站上下了很多商城类的源码,不是运行不了的,就是看不懂的
求高人指点啊

解决方案 »

  1.   

    那就用一个分号替换两个暂时解决把
    TextBox1.Text.Trim().Replace("'","''");
      

  2.   

    最好是SQL都要参数化。http://www.cnblogs.com/asdlx/archive/2010/05/14/1735410.html如果一定要“拼sql”,千万不要用什么所谓的“全局性过滤”,而应该根据客户端提交的数据特征进行验证和限制长度。比如密码文本框的文本长度、密码字符的取值范围、url参数id是个非负整数(假设)等,个别数据个别验证。
      

  3.   

    购物车那块还是删除吧,已经生成订单,订单详细表也已经插入产品信息了,购物车就没它存在的必要。
    lz为什么不用cookies来做购物车呢。
      

  4.   

    你用DbParameter 传参吧。。至少可以保证安全。。
      

  5.   

    sql预编译、过滤字符串等等……
      

  6.   

    用户名和密码用参数来写,parameter 用这个不用拼接字符串就不会造成注入式攻击了
      

  7.   

    用SqlParameter传参是比较安全的。这样写法肯定会造成注入式攻击
      

  8.   

    SqlCommand cmd = new SqlCommand(strsql,cn); 
    string str = "select * from usertable where name=@username and pwd=@userpwd";
            cmd.Parameters.Add(new SqlParameter("username", SqlDbType.VarChar, 16));  
            cmd.Parameters["username"].Value = tetUserName.Text;  
            cmd.Parameters.Add(new SqlParameter("userpwd", SqlDbType.VarChar, 16));  
            cmd.Parameters["userpwd"].Value = txtUserPwd.Text;  
      

  9.   

    使用存储过程传参的方式可有效的防止注入性攻击 SqlParameter 这个对象本身就有防注入性攻击的功能.
      

  10.   

    不要被注入性攻击吓到,没那么容易的,这样做好输入数据的验证(长度和限制一些特殊字符的输入),就几乎没有从输入框注入的可能。
    倒是从地址栏进行注入需要多注意下,写个过滤的项目,把地址栏里的get参数全部过滤一下(去掉特殊字符),就可以了。