双赢网安全实施方案
Version: 0.1
发布记录
版本 |
日期 |
作者 |
说明 |
0.1 |
|
mol. Abraham |
第一版初级构思 |
0.2 |
|
mol |
增加Acegi的说明 |
03 |
|
mol |
URL重写、 SysLog |
|
|
|
|
1. 关于本文档
本文档是开发双赢网系统确保系统安全的一个初级文档,在以后的编码实现和上线运行后还要做进一步的修改。此文档的目的就是在系统编码实现前,为以后系统在安全扩展方面留一定余地。
本文档提供给所有开发人员阅读,包括:系统构架、设计人员、编程开发人员、界面开发人员。
本文档中涉及的JAAS、Acegi等的相关内容请参阅相关资料或文档。
2. 环境准备
本系统主要采用java ee进行开发,3D模特生成由其他相关开发人员进行开发,在此仅仅讨论java ee的安全。
应用系统开发环境要求如下:
W JDK:JDK1.5。使用Sun提供的JDK,不建议使用ibm等公司的JDK,采用IBM等公司的特殊产品除外。
W J2EE Server:可以使用任何一个符合J2EE 1.5规范的JAVA EE Server,要求至少提供:Web Container、EJB Container、JNDI、JTA、DataSource。使用JBoss-4作为部署、运行环境。
W DB:采用ORACLE9I ,在性能,安全方面比同类数据库来的更优秀,但也对公司技术人员有了进一步的要求:oracle的管理来的比较复杂。
W 系统架构采用 webwork spring ejb hibernate,
3. 安全特性:
安全分:1.硬件安全 2.软件安全
3.1. 硬件安全
硬件安全主要是采用硬件防火墙, 见图
3.2. 硬件部件
1. 前/后台硬件防火墙;
2. 2台服务器------备用服务器;
3. 机房-宽带
4. 系统Enterprice Red Hat 4 Linux
5. 杀毒服务器 软件防火墙(可不要)
6. Oracle 数据库
7. WebLogic
3.3. 软件安全
安全只能说是相对的,在目前的软件开发安全方面,总是彼长此浮。只能在一定范围能限制一定的用户的破坏,现在看以前的安全漏洞,现在新的开发技术已经能很好的克制,但是目前不还是有很多黑客嘛
我们的安全肯定是不能防范顶级破坏人员,只能让我们的技术人员在不断的工作学习过程中和他们较量吧,呵呵!
3.4软件的中间件/组件选择:
1) 数据库层:oracle9i
2) 容器:
免费版本 1:tomcat 2:jboss
商业版本 1:weblogic 2:webshpere
如果公司资金允许的话 建议使用web logic
可以考虑使用glassfish
4. 硬件安全:
对硬件的安全,我这里就不作说明了,改天找个专门的人员给讲解一下!人选已经找到,时间待定!
4.1. 硬件拓扑图
4.2. 硬件图
5. 软件安全
5.1. 软件方面的安全隐患与部分解决方案
1、 操作系统-----
软件运行的操作系统,就存在着一定的安全隐患,我们的系统运行其上,定会受到攻击。
对于这个问题,我们只能不端的升级系统,打补丁。采用隐患较小的linux/unix系统比较妥当些
2、 第三方组件的缺陷
我们的系统不可能从零做起。
Java ee也不推荐重复发明轮子的做法,我们在开发业务系统的时候,都是采用第三方的开源或者商业的组件、中间件来辅助/加快我们的开发速度。但是这些第三方组件不是完美的,都存在着一定的问题,恶意用户就会利用这些组件来攻击我们的业务系统。
对此,我们能做的就是在选用第三方组件的时候,考虑周全,避免存在重大漏洞的组件被选用。
3、 页面另存修改后,提交
4、 跳过浏览器的JS验证
5、 基于状态的攻击-----隐藏域----改成无意义的字段
对于以上的攻击方法,就是在服务器端,进一步做验证,防止非法的数据进入后台数据库等
6、 CGI----参数暴露在URL中
一般的做法是用户target来屏蔽,但是也难免会通过另存 或 查看源文件来找到;
7、 URL的跳转
HTTP是个无状态的协议,可以通过URL去访问受保护的资源。
--------对用户的访问拦截做校验
8、 破坏Cookie
Cookie的不安全性 至今没有很好的解决办法
-------一般的电子商务网都是不负责任的去使用
解决办法: 1)cookie对称性加密---acegi中有 或用DOJO
2)HTTPS传输
对称性加密不好
9、 注入非法的数据或命令
一般的注入 分3种:
1) Sql ----拼写符合DB关键字的语法
2) Pro ---存储过程
3) Shell ----操作系统命令
-------------------我们的框架已经能很好的处理这个问题
10、 数据库角色安全:
给不同的用户分派不同的数据库权限 ,同时把不必要的函数及存储过程删除。
root ----mysql
Sa -------sql server
Sys system ----oracle
禁止使用上述角色提供给web user使用。
在对安全有很高限制的地方,我们应该提供视图 供用户操作,不提供基础数据库表。