日期:2014-05-17  浏览次数:20398 次

asp.net 商城类网站订单和注入性攻击
本人新手,第一次做商城类网站有很多地方都不太懂
主要是订单这里,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这个网站上下了很多商城类的源码,不是运行不了的,就是看不懂的
求高人指点啊


------解决方案--------------------
最好是SQL都要参数化。http://www.cnblogs.com/asdlx/archive/2010/05/14/1735410.html

如果一定要“拼sql”,千万不要用什么所谓的“全局性过滤”,而应该根据客户端提交的数据特征进行验证和限制长度。比如密码文本框的文本长度、密码字符的取值范围、url参数id是个非负整数(假设)等,个别数据个别验证。


------解决方案--------------------
购物车那块还是删除吧,已经生成订单,订单详细表也已经插入产品信息了,购物车就没它存在的必要。
lz为什么不用cookies来做购物车呢。
------解决方案--------------------
探讨
用户名和密码用参数来写,parameter 用这个不用拼接字符串就不会造成注入式攻击了

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