|
沙发
楼主 |
发表于 2008-5-28 20:59:03
|
只看该作者
|
1.如何验证输入——
是否清楚入口点
是否清楚信任边界
是否验证Web页输入
是否对传递到组件或Web服务的参数进行验证
是否验证从数据库中检索的数据
是否将方法集中起来
是否依赖客户端的验证
应用程序是否易受SQL注入攻击
应用程序是否易受XSS攻击
如何处理输入
2.身份验证——
是否区分公共访问和受限访问
是否明确服务帐户要求
如何验证调用者身份
如何验证数据库的身份
是否强制试用帐户管理措施
3.授权——
如何向最终用户授权
如何在数据库中授权应用程序
如何将访问限定于系统级资源
4.配置管理——
是否支持远程管理
是否保证配置存储的安全
是否隔离管理员特权
5.敏感数据——
是否存储机密信息
如何存储敏感数据
是否在网络中传递敏感数据
是否记录敏感数据
6.会话管理——
如何交换会话标识符
是否限制会话生存期
如何确保会话存储状态的安全
7.加密——
为何使用特定的算法
如何确保加密密钥的安全性
8.参数操作——
是否验证所有的输入参数
是否在参数过程中传递敏感数据
是否为了安全问题而使用HTTP头数据
9.异常管理——
是否使用结构化的异常处理
是否向客户端公开了太多的信息
10.审核和日志记录——
是否明确了要审核的活动
是否考虑如何流动原始调用这身份
大家看着上面一段话,是不是会头大?
我们可以用两句话来概括。
第一句话是
“当数据跨越不可信任环境和可信任环境的边界时候,必须对其进行验证”
第二句话是
“最小权限原则”
所以当程序员编写代码,或者需求分析人员分析权限功能的需求,或者设计人员设计软件架构时候,牢牢记住上面两句话,就可以覆盖了开头一堆啰嗦的语句,呵呵。 |
|