- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于web应用程序安全的思考(四).doc
关于web应用程序安全的思考(四)
继续我的安全模块设计之前﹐再对以系统功能作为权限管控的方法进而实现系统安全的完全脱耦方案进行说明。 我以一个实际的小型订单管理系统为例来实现这种权限设计方案﹐也欢迎大家能提出自己的权限设计方案来对比﹕
某某公司在线订单管理系统的用户需求说明书﹕
1. 要求系统实现﹕下单﹐订单维护(包括修改和删除订单)﹐订单审核﹐收款﹐发货﹐各种单据的查询和报表功能。
2. 只有注册用户才可以下单
3. 用户可以修改和删除他自己的未审核订单
4. 管理员可以删除未审核的所有订单
5. 销售经理进行订单审核﹐但只可审核其所在区域的订单﹐管理员可以审核所有区域的订单
6. 财务部门可以进行订单收款确认动作
7. 仓库管理者在订单审核并且财务部门收款后发货
8. 注册用户可以打印他自己下的订单。
9. 销售经理可以打印其所在区域的订单﹐管理员可以打印所有区域的订单
10.管理员,财务部门可以打印收款报表
11.管理员,仓库管理者可以打印出库报表
对于这个系统﹐在需求分析后提取的系统功能有﹕
1﹕下单
2﹕订单维护(修改和删除自己的订单)
3﹕管理员订单删除
4﹕订单审核
5﹕收款
6﹕发货
7﹕用户订单报表
8﹕审核者订单报表
9﹕收款报表
10﹕出库报表
系统设计﹕
1:下单﹕用户登录--gt;用户挑选商品--gt;预览商品列表--gt;下单提交
2:订单维护﹕用户登录--gt;按用户ID抓取他的所有订单--gt;用户修改或删除未审核未收款的订单
3:管理员订单删除﹕用户登录--gt;抓取所有的未审核未收款的订单--gt;删除用户所选订单
4:订单审核﹕用户登录--gt;抓出其权限区域下的所有待审订单--gt;审核订单
5收款﹕用户登录--gt;输入收款订单号或其它查询条件查出订单--gt;填入相应订单的收款数据--gt;提交确认
6:发货﹕用户登录--gt;抓出所有已收款﹐已审核的订单--gt;填入相应订单的发货数据--gt;提交确认
7:用户订单报表﹕用户登录--gt;打印用户自己的订单数据
8:审核者订单报表﹕用户登录--gt;打印其权限区域下的所有订单数据
9﹕收款报表﹕用户登录--gt;打印收款报表
10﹕发货报表﹕用户登录--gt;打印所有发货报表
在系统的业务功能出来后﹐我的权限管控方案也相应的出来了﹕
一.开发者按照我的系统设计﹐相应的开发出对应这些功能的程序﹐而完全不需考虑权限部分。
在这里一个系统功能并不一定表示一支程序﹐同一支程序里你完全可以实现2种或以上的功能。
如﹕程序员在接到订单维护和管理员订单删除这两个功能后﹐它决定只用一支程序OrderMaintain.aspx程序来实现﹕
但是他怎么区分是否该显示删除按钮﹐修改按钮﹐还是区分该传 user id抓订单数据还是抓所有数据?
我没有告诉开发者任何有关权限的信息﹐因此他完全可以以这种方式来区别。
If(Request.QueryString[kind] ==1)
这是订单维护功能(所以按user id抓订单数据﹐并显示修改﹐删除按钮)
Else if(Request.QueryString[kind] == 2)
这是管理员订单删除功能(抓所有数据﹐并只显示删除按钮)
而无需书写这样的代码﹕
if (user.has(订单维护))
抓自己的订单﹐并显示修改﹐删除按钮
Else (user.has(管理员订单删除))
抓所有订单﹐并显示删除按钮﹐隐藏修改按钮
上面方式有以下缺点﹕
1.权限判断has方法与业务系统紧耦合
2.我没有说这两种权限不能同时拥有﹐如果用户又有订单维护﹐又有管理员订单删除功能怎么办?
其它诸如以角色判断更是不可取﹐将角色hardcode进业务代码中﹐万一用户的角色需要变更那你不是麻烦大了?
二.在系统开发完后﹐系统上线前﹐要求程序员将程序交给我﹐如﹕
下单: order.aspxproductlist.aspx
订单修改﹕ ordermaintain.aspx?kind=1orderlist.aspx
管理员订单删除﹕ ordermaintain.aspx?kind=2
订单审核﹕ check.aspxorderlist.aspx
收款﹕ pay/*
等等
三.分配权限(新增角色列表﹐分配角色权限﹐将用户对应到角色﹐也可以通过权限分配程序让用
文档评论(0)