这几天有空参加了360主办的第一届互联网安全大会(ISC 2013),除了现场看到FREEBUF现场微博号发的众多妹子之外,也听到了很多有趣的议题,比如TK分享的通过网络运营商缓存服务器偷渡,只需一台电脑,一根网线,就能对任何网站实施挂马攻击,感受颇多,明天继续参加WEB应用安全论坛,在参加之前,也浅谈分享下自己在WEB应用安全方面的一些心得,众大牛轻喷。
1:Content-Security-Policy
Content Security Policy是Mozilla为了提高浏览器安全性开发的一套新的安全机制,该机制让网站可以定义内容安全政策,明确告知浏览器哪些内容是合法的,让浏览器得以避开恶意内容。CSP主要锁定解决XSS及跨站冒名请求(Cross Site Request Forgery)等网络应用程序漏洞。强烈建议用户将该告警打开,你可以看到哪些数据在干坏事。
在Web上,此策略是通过HTTP头或meta元素定义的。在Chrome扩展系统中,不存在这两种方式。扩展是通过manifest.json文件定义的:
{
…,
“content_security_policy”: “[POLICY STRING GOES HERE]“
…
}
关于CSP语法的详细信息,请参考W3C的 Content Security Policy规范。
2:设置X-Frame
所有的现代浏览器都支持X-Frame-Options HTTP头,这个头允许页面被iframe使用时是否正常渲染。通过使用X-FRAME-OPTIONS伪指令,Web开发人员可以立即帮助IE8用户减轻来自各种Web 应用程序攻击的威胁。
使用X-Frame-Options 有两种可能的值:
DENY :该页无法显示在一个框架中.
SAMEORIGHT :页面只能显示在页面本网站的框架中.
换句话说,通过<IFRAME>/<FRAME> 框架加载页面,如果你指定DENY,不仅会尝试加载在一个 框架页面失败,其它网站加载也会失败。 另一方面,如果你指定 SAMEOptions ORIGHT, 其它网站加载会失败。
3:防止CSRF跨站攻击
建议在每个表单验证的地方加上随机的token,这样能够防止用户被CSRF攻击。关于CSRF跨站请求攻击防护,FREEBUF上曾有同学写过详细的文章,可以查看
4:DAL (data/database access layer)
DALS http://en.wikipedia.org/wiki/Data_access_layer能够有效的防止SQL注入,但是很少有公司知道如何正确的使用,虽然DALS改造比较复杂,但是因为每一个单一的数据库调用需要的修改和插入等操作都在DAL层操作,所以从底层上杜绝的SQL注入的产生。
5:文件系统禁止写入
正确的设置CONFIG文件,设置网站的用户无法在文件系统上写入文件。
6:安全日志审计
日志信息能够很快的帮助用户发现攻击者的踪迹,可以通过一些日志分析系统对IIS、APACHE、NGINX、WINDOWS、LINUX等日志进行实时的分析,如OSSEC、ZABBIX等,构建攻击特征库,发现攻击行为第一时间产生告警。
7:加密存储
从之前的CSDN、世纪佳缘等著名站点被脱裤事件中可以看出,很多站点仍然采用明文的方式存储用户密码,采用一个过时的HASH算法,攻击者可以很轻松的获取到用户的相关信息,而有的站点很多的功能依赖于现有的数据库设计和相关的结构化数据,导致后期更改用户的哈希算法非常棘手。
8:SSL、COOKIE设置HTTPONLY和STS
任何一个网站,如果不支持SSL加密传输,非常容易遭受到中间人攻击。COOKIE没有设置HTTPONLY和STS,也非常容易遭受到跨站攻击。
9:构建安全框架
构建一个适合企业自己的安全框架,程序员在写程序的时候调用安全框架,过滤用户的一切有害输入,如XSS、SQLI、命令注入等等,可以从一定程度上降低安全风险。
10:设置autocomplete=off和强密码
AutoComplete控件就是指用户在文本框输入前几个字母或是汉字的时候,该控件就能从存放数据的文本或是数据库里将所有以这些字母开头的数据提示给用户,供用户选择,提供方便。但是在方便的同时也可能带来一定的安全风险,攻击者可能获取用户键入的一些历史信息,比如密码等。