背景
随着计算机网络技术的快速发展,Web应用技术在各个领域都得到了广泛的应用,但是由于不法分子针对Web应用程序相关安全漏洞的挖掘利用及恶意攻击手段的层出不穷,而与此同时国内Web应用开发人员水平参差不齐,很多开发人员安全意识淡薄,导致Web应用存在各种各样的安全漏洞,使得Web应用程序在给用户提供简便、快捷服务的同时,用户不得不为其自身可能存在的Web安全问题而担忧。主要针对Web项目中常见的安全问题进行深入的研究与分析,并对提出的各种安全问题给出了一些有效的解决方案。
安全常见问题及防范
1.输入检查表单非严格验证bug
描述:对用户提交数据没有做严格的后台验证、数据格式可以随意构造(所有前台的数据验证都只是为了提供一个更好地 用户体验(快速的给用户一个错误反馈),并不能保证数据的合法性和安全性)
可能存在地方:所有的存储性表单提交
措施:
2.文件上传
描述:用户可以上传任意格式(或某些不应该的,比如.aspx,.php等)的文件到服务器,并且用户还能通过一些手段获得上传后文件的路径。
可能存在地方:存在于文件上传的页面(头像更新等)
措施:
3.文件下载
描述:利用url构造,可以下载服务器上面的任意或指定外的文件
可能存在地方:存在于文件下载的页面
措施:
4.目录遍历漏洞
描述:由于配置文件的错误,导致了一些本不应该共享的目录被共享了,就造成了用户可以任意访问目录,指程序中未过滤用户输入的…/和./之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件
可能存在地方:一般不好发现,最简单的发现方式是通过程序扫描
措施:
5.弱口令
描述:由于用户名和密码这些认证登录信息十分简单造成的(初始账号、密码等等)
可能存在地方:所有认证登录的表单
措施:
6.SQL注入
描述:通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。通过Sql注入,可能可以绕过某些验证(登录)、越权访问数据库表的信息等等
可能存在地方:查询搜索框(表单)
措施:
7.XSS攻击(跨站脚本攻击)
描述:XSS的本质是HTML注入,用户输入的数据被当成Html代码执行了,用户可以上传构造好的恶意脚本语句保存到数据库中,在其它用户访问某些页面时,那些恶意脚本加载并执行,可以盗取用户帐户,修改用户设置,盗取/污染cookie,做虚假广告等
可能存在地方:所有的存储性表单提交
措施:
8.CSRF攻击的防御
描述:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。
可能存在地方:需跨域对外提供公共API
检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞
随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等
以CSRFTester工具为例,CSRF漏洞检测工具的测试原理如下:使用CSRFTester进行测试时,首先需要抓取我们在浏览器中访问过的所有链接以及所有的表单等信息,然后通过在CSRFTester中修改相应的表单等信息,重新提交,这相当于一次伪造客户端请求。如果修改后的测试请求成功被网站服务器接受,则说明存在CSRF漏洞,当然此款工具也可以被用来进行CSRF攻击
措施:
9.CST/XST-跨站式追踪攻击
描述:攻击者将恶意代码嵌入一台已经被控制的主机上的web文件,当访问者浏览时恶意代码在浏览器中执行,然后访问者的cookie、http基本验证以及htlm验证信息将被发送到已经被控制的主机,同时传送Trace请求给目标主机,导致cookie欺骗或者是中间人攻击
可能存在地方:所有请求响应
措施: