欢迎来到天天文库
浏览记录
ID:9523444
大小:64.50 KB
页数:8页
时间:2018-05-02
《关于web应用程序安全的思考(四)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、关于web应用程序安全的思考(四) 继续我的安全模块设计之前﹐再对以系统功能作为权限管控的方法进而实现系统安全的完全脱耦方案进行说明。 我以一个实际的小型订单管理系统为例来实现这种权限设计方案﹐也欢迎大家能提出自己的权限设计方案来对比﹕ 某某公司在线订单管理系统的用户需求说明书﹕ 1. 要求系统实现﹕下单﹐订单维护(包括修改和删除订单)﹐订单审核﹐收款﹐发货﹐各种单据的查询和报表功能。 2. 只有注册用户才可以下单 3. 用户可以修改和删除他自己的未审核订单 4. 管
2、理员可以删除未审核的所有订单 5. 销售经理进行订单审核﹐但只可审核其所在区域的订单﹐管理员可以审核所有区域的订单 6. 财务部门可以进行订单收款确认动作 7. 仓库管理者在订单审核并且财务部门收款后发货 8. 注册用户可以打印他自己下的订单。 9. 销售经理可以打印其所在区域的订单﹐管理员可以打印所有区域的订单 10.管理员,财务部门可以打印收款报表 11.管理员,仓库管理者可以打印出库报表 对于这个系统﹐在需求分析后提取的系统功能有﹕ 1﹕下单 2﹕订单
3、维护(修改和删除自己的订单) 3﹕管理员订单删除 4﹕订单审核 5﹕收款 6﹕发货 7﹕用户订单报表 8﹕审核者订单报表 9﹕收款报表 10﹕出库报表 系统设计﹕ 1:下单﹕用户登录-->用户挑选商品-->预览商品列表-->下单提交 2:订单维护﹕用户登录-->按用户ID抓取他的所有订单-->用户修改或删除未审核未收款的订单 3:管理员订单删除﹕用户登录-->抓取所有的未审核未收款的订单-->删除用户所选订单 4:订单审核﹕用户登
4、录-->抓出其权限区域下的所有待审订单-->审核订单 5收款﹕用户登录-->输入收款订单号或其它查询条件查出订单-->填入相应订单的收款数据-->提交确认 6:发货﹕用户登录-->抓出所有已收款﹐已审核的订单-->填入相应订单的发货数据-->提交确认 7:用户订单报表﹕用户登录-->打印用户自己的订单数据 8:审核者订单报表﹕用户登录-->打印其权限区域下的所有订单数据 9﹕收款报表﹕用户登录-->打印收款报表 10﹕发
5、货报表﹕用户登录-->打印所有发货报表 在系统的业务功能出来后﹐我的权限管控方案也相应的出来了﹕ 一.开发者按照我的系统设计﹐相应的开发出对应这些功能的程序﹐而完全不需考虑权限部分。 在这里一个系统功能并不一定表示一支程序﹐同一支程序里你完全可以实现2种或以上的功能。 如﹕程序员在接到订单维护和管理员订单删除这两个功能后﹐它决定只用一支程序OrderMaintain.aspx程序来实现﹕ 但是他怎么区分是否该显示删除按钮﹐修改按钮﹐还是区分该传userid抓订单数据还是抓所有数据?
6、 我没有告诉开发者任何有关权限的信息﹐因此他完全可以以这种方式来区别。 If(Request.QueryString[kind]==1) 这是订单维护功能(所以按userid抓订单数据﹐并显示修改﹐删除按钮) Elseif(Request.QueryString[kind]==2) 这是管理员订单删除功能(抓所有数据﹐并只显示删除按钮) 而无需书写这样的代码﹕ if(user.has(订单维护)) 抓自己的订单﹐并显示修改﹐删除按钮 Else(user.has(管理员订单删除))
7、 抓所有订单﹐并显示删除按钮﹐隐藏修改按钮 上面方式有以下缺点﹕ 1.权限判断has方法与业务系统紧耦合 2.我没有说这两种权限不能同时拥有﹐如果用户又有订单维护﹐又有管理员订单删除功能怎么办? 其它诸如以角色判断更是不可取﹐将角色hardcode进业务代码中﹐万一用户的角色需要变更那你不是麻烦大了? 二.在系统开发完后﹐系统上线前﹐要求程序员将程序交给我﹐如﹕ 下单: order.aspxproductlist.aspx 订单修改﹕ordermaintain.aspx?kin
8、d=1orderlist.aspx 管理员订单删除﹕ordermaintain.aspx?kind=2 订单审核﹕ check.aspxorderlist.aspx 收款﹕ pay/* 等等 三.分配权限(新增角色列表﹐分配角色权限﹐将用户对应到角色﹐也可以通过权限分配程序让用户自己维护这些数据) 群组 系统功能 普通用户 下单 普通用户 订单维护 管理员 管理员订单删除 区域经理 订单审核 管理员 订单
此文档下载收益归作者所有