老司机保驾护航,让你的网络安全之行多一层保障 - 冯磊

XSS(跨站脚本攻击)

最常见的是cookie劫持,简单来说就是我们用浏览器登录一个网站,主要是用存在客户端浏览器里的cookie来保存客户唯一标识的令牌,在Java写就的网站里,是一个jsessionid,如果通过抓包获取了浏览器的jsessionid,那么在另一个地方,就可以模拟用户的登录,从而窃取用户的资料乃至进行一些登录后才可以做的操作,危害性很大。

SQL注入

在网站所有搜索输入框中,输入的内容,一般会通过在服务器端拼接SQL语句去向数据库发起查询请求,然后把结果展示在网页上,如果查询一个人'jack':期望的语句是:select * from user where username='jack';但如果被输入的内容为jack' or '1‘=’1,结果语句变为:select * from user where username='jack or ‘1’=‘1';于是,所有用户的资料都被查询出来,如果后面跟的不是1=1,是drop等更具毁灭性的语句,那带来的损失将无法估量。

文件上传漏洞

很多网站都有文件上传的功能,而少数网站并没有对文件后缀名进行限制,所以有可能被恶意的人抓住机会,上传一些恶意程序。比如针对Java网站的JspBrowser.jsp,这个程序上传并执行后,可以在网页端看到整个服务器的目录结构,所有文件,以及可以在网页上执行服务器上的一些命令,危害极大。要避免这种情况,首先要对上传文件的类型加以限制,并且对上传文件夹进行随机生成的处理,使得黑客无法掌握到上传路径,另外将上传文件夹放在另外一个存储服务器上,而不是应用服务器内,将上传文件夹设置为不可执行目录,都是规避这一攻击的方法。

网站通讯安全SSL

大家也都知道,大型网站如百度,淘宝已经实现了全站加密,也就是部署了https证书,https证书实际上是一种非对称加密算法,用来对浏览器和服务器之间的通讯数据进行加密,使得在公网上传输的数据不会被人轻易抓包并解析,用来盗用,篡改。在交易类,金融类的网站上尤为必须,特别注意的是,现今很多公司不光有网站,还有iOS,安卓,微信等移动端,那么移动端的接口,和微信的站点,也必须部署SSL证书,保障数据安全。

访问控制

对于服务器来说,最重要的是要有一个好的访问控制策略,首先对不必要的端口进行关闭,另外对经常用的比如ssh,ftp默认端口进行修改,也会极大降低安全隐患,还有linux的iptable,限制一些ip对一些核心端口的使用,都可以提高安全性。对于数据库来讲,设置白名单是必要的,对读写账号和只读账号的登录地址进行分配,培训开发人员正确使用账号,管控运维人员在生产环境的操作,必要时可以用堡垒机,数据库审计等方式进行安全控制。

加密算法

对于一些加密的算法,比如MD5,虽然是不可逆算法,但是由于被广泛使用在互联网行业,所以出现了很多逆向查询的网站,也就是直接的MD5加密其实并不安全,所以需要在算法里加一些干扰因素,也就是加盐的过程,这个盐值可以是用户名,邮箱,注册时间等信息的一部分,这样得到的MD5串相对难以**。

WEB框架安全

众所周知,当前无论用任何语言开发的网站多数采用开源的第三方MVC框架,比如Spring,Struts,而这些框架都曾暴露出漏洞,Spring3的类加载漏洞,以及Struts2的XSS漏洞,都对使用这些底层框架的网站产生过一些影响,作为网站的运营者,需要关注这些安全领域的问题,及早修复,打补丁,其中还包括操作系统补丁,各种服务器端工具软件的补丁。好在如果使用公有云服务,比如阿里云,已经提供了升级补丁的服务并且也很便宜,这方面可以采用第三方的方案,如果是自有机房,IDC的话,还需要运维及时跟进行业最新安全动态。

WEB服务器安全

对于使用Apache,Tomcat,Jboss,Nginx之类免费Web或应用服务器的团队,也应该对服务器软件进行深入的研究,尤其是配置,对于apache来说, 删除不必要的module可以减少风险对于Nginx,升级到新版本更加安全,tomcat则要删除例子应用和管理权限配置,同时关注所使用服务器的官方网站,随时更新漏洞补丁及做好防范。

DDos,CC攻击

这类攻击主要是掌握了大量肉鸡的黑客或非法组织,采用成百上千台机器对网站发起请求,有的是以大流量阻塞网站的通讯,有的是用高频的请求,去耗尽网站服务器的系统资源,总之这种攻击手法一般很难防御,除非有很大的机房和负载均衡机制。当然,现在公有云服务商比如阿里云,腾讯云也都有相应的服务,只是比较贵,也有一些安全厂商如知道创宇,提供按年付费的防攻击服务,只需将域名解析到安全公司的安全云上,他们就可以通过安全策略过滤掉一些攻击流量和请求,使得真正回到网站服务器的请求基本是正常合法请求,保护了服务器的资源。

羊毛党,反欺诈

对于互联网金融类网站,还有一种业务需求,就是尽量屏蔽掉羊毛党,和欺诈用户,这方面也有很多第三方公司提供相应的服务,比如安全厂商知道创宇,提供了反羊毛的服务,通过接口调用的方式可以查询某一个用户的羊毛指数,如果这个用户在其他平台多次被报告为羊毛党,会在安全公司的数据库里被标识出来。而反欺诈方面,有同盾,上海资信,好贷云风控等等相关第三方公司,他们广泛收集各大平台的欺诈数据,形成数据库,以接口方式提供给平台方,在业务中集成这些第三方厂商的接口,是一个很好的避免损失的解决方案。

密码

其实密码问题也非常重要,简单来说就是企业的员工不要所有需要登录的地方都用一套密码,也不要用简单密码,而采用大小写字母加数字的方式,否则一旦有哪个网站被攻陷,等于其他网站也都暴露了,通过撞库很容易被**,登录,造成个人信息的外泄甚至一些经济损失还有,密码理论上每隔一段时间要重新设置,这也是跨国公司严格执行的一个铁律,另外不要把所有密码都存在网上,比如云笔记之类的地方,导致风险全集中在一个点。

总结

说一千道一万,安全不仅仅是以上这些方面做好就高枕无忧了,安全是一种心态,一套做事流程,也是一种职业素养。每一个工程师和普通互联网用户,都应该形成这种安全意识,才能降低风险,减少不必要的损失。


分享者简介:

老司机保驾护航,让你的网络安全之行多一层保障 - 冯磊冯磊,银魅财富CTO
北京航空航天大学硕士,12年软件行业经验,先后就职于北大方正集团,中国国际金融有限公司,甲骨文等国内外知名企业,对软件工程、数据库、互联网高并发有深入研究和多年实践经验。

本文转载自微信公众号 中生代技术 freshmanTechnology