安全方案
1.1 代码级安全控制
1.1.1 防止SQL注入
应对方式:
? 参数不采用SQL拼凑的方式,而采用占位符”?”方式
? 对特殊词条进行过滤
备注:安全起见,删除DB的无用的用户及存储过程
1.1.2 防止跨站点脚本攻击
应对方式:
? 检查所有产生动态网页的代码
? 判定动态网页的内容是否包含不安全的输入消息
? 对输入进行校验
? 对输入的编码以过滤特殊字符
? 设置HTTP协议头信息:HttpOnly Cookie----深层防护
举例:<;<%;<Script;cookie以及非字符串类型的数据—像日期,整数,货币等;
1.1.3 防止通过异常报错提示,获取攻击信息
防止产生SQL异常,暴露出DB的元数据信息:如表明,字段等信息;同时解决404,500,503等异常。
应对方式:
? 定义统一的异常处理框架
DB层异常,抛到业务层,业务层异常抛到action层,有action层统一对异常进行包装,杜绝到处抛异常;通过e.printStackTrace();的方式,将整个堆栈的错误内容打印到客户端
? 针对HTTP协议错误码,定义404等错误页面---web.xml中定义即可
1.1.4 服务器端验证用户提交数据
1.1.5 对于上传文件
上传文件要控制类型、大小等
1.1.6 Form表单伪造
通过token,或者在session中加一个标记验证
1.2 软件设置控制
1.2.1 防止服务器因攻击宕机
UCP\ICMP数据包洪水攻击、磁盘攻击、路由不可达、分布式拒绝服务(ddos)、缓冲区溢出、攻击者获得管理员权限等都可以让web服务器宕机不可用,这个时候就要合理配置apache等类似web服务器。
应对方式:
1.2.1.1 勤于升级和打补丁
1.2.1.2 隐藏和伪装apache版本:
修改配置文件/etc/httpd.conf。找到关键字ServerSignature,将其设定为:
ServerSignature Off
ServerTokens Prod
然后重新启动Apache服务器
通过分析Web服务器的类型,大致可以推测出操作系统的类型,比如,Windows使用IIS来提供HTTP服务,而Linux中最常见的是Apache。
默认的Apache配置里没有任何信息保护机制,并且允许目录浏览。通过目录浏览,通常可以获得类似“Apache/1.3.27 Server at apache.linuxforum.net Port 80”或“Apache/2.0.49 (Unix) PHP/4.3.8”的信息。
通过修改配置文件中的ServerTokens参数,可以将Apache的相关信息隐藏起来。但是,Red Hat Linux运行的Apache是编译好的程序,提示信息被编译在程序里,要隐藏这些信息需要修改Apache的源代码,然后,重新编译安装程序,以替换里面的提示内容。
以Apache 2.0.50为例,编辑ap_release.h文件,修改“#define AP_SERVER_BASEPRODUCT \"Apache\"”为“#define AP_SERVER_BASEPRODUCT \"Microsoft-IIS/5.0\"”。编辑os/unix/os.h文件,修改“#define PLATFORM \"Unix\"”为“#define PLATFORM \"Win32\"”。修改完毕后,重新编译、安装Apache。
Apache安装完成后,修改httpd.conf配置文件,将“ServerTokens Full”改为“ServerTokens Prod”;将“ServerSignature On”改为“ServerSignature Off”,然后存盘退出。重新启动Apache后,用工具进行扫描,发现提示信息中已经显示操作系统为Windows
1.2.1.3 建立一个安全的目录结构
1.2.1.4 为apache使用专门的用户和用户组
1.2.1.5 配置web目录的访问策略
1. 禁止使用目录索引
2. 禁止默认访问
3. 禁止用户重载
4. Apache服务访问控制:
order deny,allow
deny from all
1.2.1.6 管理apache访问日志
1. 日志轮询方式
2. 访问日志分析
1.2.1.7 保护apache密码
1. 增加新的许可用户
2. 建立.htpasswd文件
3. 实现对.haccess文件的保护
4. 建立允许访问的组
5. 禁止读取文件
1.2.1.8 减少CGI和SSI风险
1.2.1.9 让apache安全稳定运行---- chroot化
1.2.1.10 配置Apache DoS Evasive Maneuvers Module 方式DOS攻击
1.2.1.11 利用LDAP认证apache
1.2.2 Servlet以及JSP的安全性控制
缺省情况下,如果你访问tomcat下的一个web应用,那么如果你输入的是一个目录名,而且该目录下没有一个可用的welcome文件,那么tomcat会将该目录下的所有文件列出来,如果你想屏蔽这个缺省行为,那么可以修改conf/web.xml文件:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
1.3 网络、操作系统等安全设置
一下对
1.3.1.1 禁止Ping入
1.3.1.2 只提供8080、80、443端口
1.3.1.3 控制用户组,取消对磁盘的写权限,-
防止dll、木马写入提升权限等
1.3.1.4 及时升级操作系统
不间断升级操作系统,打补丁;防止漏洞攻击
1.3.1.5 防钓鱼
系统管理检测网络,举报类似网站等手段
1.3.1.6 网络监控—Snort
采用Snort IDS来有效监控P2P、后门、DDOS、web攻击等
1.3.1.7 调整防火墙策略
1.3.1.8 配置严格的安全防护规则
1.3.1.9 木马、网马、病毒防范
2 未尽事宜
2.1 以上可以避免大部分的网络攻击,还有公司内部的员工攻击
建议完善公司内部的制度,建立非军事化安全体系保障
2.2 在公司经济条件允许的前提下,购买硬件防护
是软件就有bug,就有可能被置入病毒木马等,硬件在提升安全上面更加有效,也更加安全
2.3 注意数据的备份
低成本的网站安全解决方案
最新推荐文章于 2022-04-02 18:34:37 发布