zoukankan      html  css  js  c++  java
  • C# session引起的bug

    一个在用项目,最近总是发现不正常的数据进来,而且是成功状态,后果非常严重。但之前负责这个项目的同事离职了,现在我在接手,所以bug找的总是不得头绪。

    今天按照逻辑来说,已经彻底将这个bug排除了,在此记录一下。

    因为项目已经在用, 不能说的太细,先大概简单说一下bug。

    情况一:小A没有分配提交数据的权限,结果他们却将数据提交上来。

    情况二:小A正常情况下,应该向所属主管提交数据,结果他们却能将数据提交到经理那,甚至董事长那,跨级提交。

    第一种情况,后来发现是存储过程写的有问题,在判断是否有提交权限时,使用了select sum(*),后面又用if(@@rowcount=0)来判断是否有结果,这样即使没有记录,sum出来的也会是0,rowcount会一直有结果,条件也会一直成立,最后一道防线没起到作用。

    补救办法:修改存储过程为select  @cou=isnull(SUM(cou),0) ,后面判断用if(@cou=0),前台之前没有判断,现在也加上判断。

    第二种情况发生的情况是因为用户在提前数据交会产生一个session,提交页面根据这个session来判断用户有没有权限提交数据。

    这时如果小B有提交权限,他先登录,访问提交页面,创建一个session。到正式提交页面,不点确认提交按钮,而是直接在地址再输入登录地址,使用小A的帐户来登录,然后再通过地址栏,直接访问提交页面,这时小B访问创建的session还是存在的,这样即使小A没有权限提交,只要session存在,小A也是能提交的。

    补救办法:登录时,清空session。

    总结:其实会产生bug,还是逻辑没有理顺,按说这也是个小bug,只是平时的习惯,没有太注意而已。

  • 相关阅读:
    继承与多态,Instanceof关键字
    面向对象,单例模式
    方法
    数组
    流程控制
    基础语法
    连接linux四大远程工具
    MYSQL-索引的设计
    银行一类(Ⅰ类)、二类(Ⅱ类)、三类(Ⅲ类)账户区别是什么?
    真正有效的学习
  • 原文地址:https://www.cnblogs.com/chendaoyin/p/3026884.html
Copyright © 2011-2022 走看看