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,只是平时的习惯,没有太注意而已。

  • 相关阅读:
    使用Emacs:生存篇
    编程之美:平面最近点对
    SOA体系结构之基础培训教程-大纲篇
    DNS:域名系统
    IIS7中 ASP.NET授权功能如何实现对静态文件的控制
    JVM内存管理学习总结(一)
    FMX中实现PostMessage的方法
    ddd
    4部门明确软件IC产业企业所得税优惠政策
    不要过分相信虚拟机,特别是网络连接方面
  • 原文地址:https://www.cnblogs.com/chendaoyin/p/3026884.html
Copyright © 2011-2022 走看看