就是现在用户在一个页面A选定了商品,当他点提交时会跳转到另一个确认页面B,而在B页面上显示了要付款的金额。
 问题出来了:
1.当用户点击B页面上的提交按钮时,要向数据库中插入所有商品的总金额,这个金额是显示在页面上的,我要从页面上取这个钱,然后存到数据库中,可是现在的要求是页面要无刷新提交,所以我用了JQuery,在整个ajax的回调过程中,后台的C#代码不能取到前台页面上的控件中的值,不知大家是如何对待这种情况
2.如果用JQuery,直接向后台的Post数据中写金额,这也太不安全了,别人改POST数据就完蛋了。
所以得出的结论是:当用户从A页面(购买页面) 跳到  B页面(确认页面),这个过程中,B页面进行了一次后台运算价格,
而当B页面再次提交数据到数据库时,B页面的后台必须“再计算一次”,因为前台的POST的数据是可修改的,前端永远是不安全的,对吗?

解决方案 »

  1.   

    首先直接拿js算出来的总金额做结算肯定是不安全的
    后台还是要根据商品清单和数据库中的定价来重新算的
    页面上的值和js中的值别人都可以随便改的页面无刷新也是可以的
    首先 产品信息包括单价数据库肯定是已有的
    然后 从A页面到B页面确定的时候 将商品清单保存起来
    然后 ajax执行提交的时候后台在重新取出来算一遍
      

  2.   

    你知道2 是不安全的。那以为1就是安全的啊。。本质上还不是一样。
    。你不会把金额放到session中吗.. 或是直接从最终的购物车的数据表中算出来呀。
    永远不要相信前台的数据。
      

  3.   

    谢谢各位的热情相肋,不过我这个和各位描述的有点不同:
    1.我做的这个是彩票的代购页面,它只需要传投注的结果给B页面,没有购物车,数据库中也没有购物车的表。
    当投注结果传到B页面后,因为是体育彩票,B页面会对这个结果进行很多的算法解析与排列组合,解析后生成几百条的明细结果,问题就是这个明细结果,我先开始是存在SESSION中,但是SESSION是会过期的,当用户来到B页面,很长时间不提交,再点提交时,可能明细结果已经丢失。
    2.还忘记说了一点,就是我也知道把这个明细结果存在页面上的一个普通控件中,肯定是不安全的,所以我当A页面跳到B页面时,在后台,用自己在后台写的加密算法把这个明细结果加密了后,再存在B页面的一个隐藏的TextBox控件中,赋值后让这个TextBox设为只读,并且TextBox的CausesValidation属性设为true(这个属性,如果用户在前台修改了你的值再提交到后台,后台就会自动拦截)。不知道这样能不能基本安全?