APP下载

电子商务网站互联网安全防御攻略

2014-05-25铁生

计算机与网络 2014年24期
关键词:表单服务器端证书

■铁生

电子商务网站互联网安全防御攻略

■铁生

在电子商务网站,互联网的安全防御相当重要,尤其是牵扯到支付这一块的。本文总结了一些比较通用的web安全防御常识,供大家参考一下。

1.信息传输加密

https使用对称加密还是非对称加密?

对称加密使用DES还是AES?

非对称加密使用RSA还是DSA?

使用什么加密算法,对于java web来讲是由keytool工具在生成秘钥库的时候指定,生成秘钥库之后,再将购买的证书进行导入。一般使用RSA加密算法。

SSL证书需要不需要购买?

不需要购买的理由-我们使用HTTPS的目的就是希望服务器与客户端之间传输内容是加密的,防止中间监听泄漏信息,去证书服务商那里申请证书不划算,因为使用服务的都是固定客户和自己内部人士,所以我们自己给自己颁发证书,忽略掉浏览器的不信任警报即可;

需要购买的理由-用户体验好、专业性强。

双向验证还是单向验证?

单向验证验证的是服务器;双向验证服务器客户端互相验证。

对于服务器来讲,单向验证能够保证传输的数据加密过了;双向验证能够保证客户端来源的安全性。

如果使用双向验证的话,需要客户端浏览器导入证书。

证书是和域名绑定的,服务开放之前,域名确定、购买,https证书的购买需要先搞定。

2.文件存储加密

非对称加密使用什么加密算法,RSA还是DSA?

非对称加解密的话,加解密比较慢,实现上使用java实现还是c?

3.防御XSS攻击

服务前台客户端,对用户输入进行js表单验证;

目前,我们服务前台的客户端的表单验证也要交互一下后台,增加了后台负载,而且还留下了XSS攻击隐患;

应该是接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交;

对于对其他的特别是javascript相关的特殊字符一律过滤;

对于某些html危险字符进行转义,比如>转义为>,<转义为<;

对于存放敏感信息的Cookie,对该Cookie添加HttpOnly属性,避免被攻击脚本窃取;

服务前台服务器端,对用户输入再次验证;

进行服务器端表单级验证,防止恶意用户模拟浏览器绕过js代码进行攻击;

建议对于服务器端表单验证统一系统异常码,结合系统异常处理机制。客户端根据服务器端返回异常码显示相应信息,而不是将异常报告赤裸裸地展现给客户:一是用户体验不好,二者给恶意用户带来可趁之机;

程序中使用ESAPI库预防XSS:

4.防御SQL注入

同3防御XSS攻击中"建议对于服务器端表单验证统一系统异常码"条;

服务前台客户端在进行表单级验证的需要对drop、update、delete等SQL进行消毒;

服务前台服务器端再次进行服务器表单级验证的时候,需要再次对drop、update、delete等SQL进行消毒,防止恶意用户绕过js进行攻击;

对敏感字符进行转义,比如'转义为';

传统jdbc进行参数绑定,如

iBATIS/MyBatis进行参数绑定,在SQL语句的节点中,设置parameterClass="java.util.Map"即可,程序里把参数封装到Map中。

5.防御CSRF攻击

使用Struts2的表单标签,其中需要增加token标签;

重要的节点如复核,加一个验证码验证;

检查HTTP请求头的Referer域,验证是否合法;

6.设定限额等风险规则,超过就预警,需额外人工授权才能审核通过

7.避免表单重复提交

使用Struts2的表单标签,其中需要增加token标签;

对上传文件进行哈希库记录验证,如有重复询问客户是否继续;

8.nginx反向代理

nginx是我们服务器对外的第一层屏障;

通过它我们可以轻松进行各种安全设定,比如禁止IP、限制IP并发数(这个可以预防DOS攻击)、设置timeout时间(这个也可以预防DOS攻击)、限制用户带宽等等;

nginx还能对外屏蔽服务器接口路径、静态文件真实路径,避免路径遍历攻击;

nginx有个专门预防XSS、注入攻击的模块naxsi;

动静分离,加快响应速度,降低tomcat负载;

负载均衡;

9.及时更新Struts2框架

10.设置文件上传白名单,或者干脆限制为xls、xlsx,以避免上传文件攻击

11.nginx漏洞利用和安全加固

nginx配置错误而导致目录遍历漏洞

比如

当访问http://192.168.1.103/test/这个URL时,正常情况应该遍历html/test/这个目录,但是如果访问http://192. 168.1.103/test../这个URL时,则会遍历上一级目录html/了。

应该改为

或者直接禁用autoindex模块。

nginx版本的选择

关于nginx的安全漏洞可以关注nginx官方发布的安全公告或到其他一些漏洞发布平台上查找。

在安装nginx时建议使用自定义安装路径,如果采用默认安装路径,很容易被攻击者和一些自动化攻击工具猜测到,为其进行下一步的攻击提供便利。

在选择nginx版本时,需要关注是否存在安全漏洞和版本的稳定性。一般选择最新的稳定版本,这样可以在稳定性和安全之间取得一个平衡。

修改/隐藏Nginx Banner信息

日志安全

修改日志的默认保存路径,然后设置只允许管理员有日志存放目录的安全控制权限。

nginx权限设置

给nginx一个权限比较低的身份运行,可以通过修改nginx.conf进行调整。应用服务器、数据库也应该遵循这个原则。

关闭服务器标记

如果开启的话(默认为开启),所有错误页面都会显示服务器的版本和信息。

设置自定义缓存以预防缓存区溢出攻击

12.web服务器和应用服务器目录权限设置原则

如果目录有写入权限,一定不要分配执行权限;

比如网站上传目录和数据库目录一般需要分配写入权限,但一定不要分配执行权限。

如果目录有执行权限,一定不要分配写入权限;

一般目录只需分配读取权限即可;

应用服务器和数据库部署在不同的服务器上;

文件属主与应用服务器进程属主不同(一般设置文件属主为root);

控制脚本只运行访问应用项目目录下的文件。

猜你喜欢

表单服务器端证书
WJCI 收录证书
CSCD收录证书
收录证书
电子表单系统应用分析
Linux环境下基于Socket的数据传输软件设计
收录证书
浅谈网页制作中表单的教学
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
动态表单技术在教学管理中的应用*