1. Web 安全
由于网络技术日趋成熟,黑客们也将注意力从以往对网络服务器的攻击逐步转移到了对 web应用的攻击。据最新调查,信息安全有75%都发生在web应用而非网络层面。
Web应用程序的安全性问题依其存在的形势划分,种类繁多,这里不准备介绍所有的,只介绍常见、比较常见和有点常见这种级别的。
2. 常见的安全问题
- 跨站脚本攻击(CSS or xSS,Cross Site Scripting)
- SQL注入攻击(SQL injection)
- 远程命令执行(Code execution,个人觉得译成代码执行并不确切)
- 目录遍历(Directory traversal)
- 文件包含(File inclusion)
- 脚本代码暴露(Script source code disclosure)
- 跨帧脚本攻击(Cross Frame Scripting)
- Cookie篡改(Cookie manipulation)
- URL重定向(URL redirection)
3. 跨站脚本攻击
2006年全球网络安全弱点Top10排名当中,它荣登榜首!为什么它有如此之大的影响力呢?原因有三:
其一、攻击难度小。不管是技术还是实现攻击的成本上都比较容易;其二、它存在的载体(浏览器)使用极其广泛;
其三、它所依赖的技术被广泛的应用与支持(Javascript,VB Script,HTML,ActiveX, Flash)。
说了这么多,它到底是什么呢?
XSS是一种存在Web应用中,允许黑客以最终用户的身份向Web应用注入恶意脚本,以愚弄其他用户或获取其他用户重要数据和隐私信息为目的的一种攻击形式。XSS可使用的技术有JavaScript、VBScript、ActiveX、或Flash,且通常通过页面表单提交注入到web应用中并最终在用户的浏览器客户端执行。例如,一个没有经过安全设计并实现的论坛,当你在跟贴时在正文输入这样的代码:
- 解决的方案
不管是上述的哪一种技术实现的XSS攻击,最终都离不开下面三点: - 其一是浏览器的解析,其
- 二是脚本语法
- 其三是脚本需要一定的长度。
控制脚本注入的语法要素。比如: javascript离不开:“”、“”、“(”、“)”、“,”.…等等,所以我们只需要在输入或输出时对其进行字符过滤或转义处理就可以了。一般我们会采用转义的方式来处理,转义字符是会使用到HTML的原始码,因为原始码是可以被浏览器直接识别的,所以使用起来非常方便。
允许可输入的字符串长度限制也可以一定程度上控制脚本注入。比如:页面表单中姓名,我可以只允许你输入5个字符,请问你还有办法进行Javascript的脚本注入吗? (还是可以通过一些手段绕过的)
还需要您注意的是: 我这里所述的过滤、检测、限制等等策略,一定一定要在Web Server那一端去完成,而不是使用客户端的Javascript或者VBScript..去做简单的检查。因为真正的攻击者不会仅仅依赖于浏览器去做攻击,而更多的往往是借助于第三方工具,根本就可以绕过你精心设计制作的客户端Javascript进行过滤、检测或限制手段的。
4. SQL注入攻击
如果我在输入用户名和密码的时候输入如下的内容:用户名: a' or 'a'='a
密码: a' or 'a'='a
用代入法把用户名和密码输入值代入到上述的SQL脚本里结果如下:
- 解决的方案
刚刚介绍了XSS,在这里关于SQL lnjection我想就无需多说了,都是过滤、合法性检查和长度限制等通用方法。
有没有注意到,XSS和SQL Injection,虽然名字不一样,但它们似乎都属于输入/输出验证。
下面将要介绍的远程命令执行、目录遍历和文件包含同样也是输入/输出验证问题。
5. 远程命令执行(code execution)
远程命令执行漏洞一般发生在Web系统允许用户通过Web应用接口访问与管理Web服务器且没有经过严格的输入验证与过滤的情况下的一种Web应用安全漏洞。
- 解决方案
1、严格限制运行Web服务的用户权限。就是说你的Web应用可以访问你的服务器系统的用户权限。一般情况一下,我们应该以白名单的形式介定Web应用可以访问服务器系统的权限。这样控制可以从系统级达到安全防范的效果。
2、严格执行用户输入的合法性检查。注意这里的输入不一定是你通过表单从键盘输入,往往是Web应用已经内定了某一些操作供您选择。
6. 目录遍历
假设study.163.com上有网络硬盘服务,当注册用户登录并开通网络硬盘服务后,即可进入自己的硬盘管理界面,我们来看看它是如何进入某一个目录的,以下是进入某一目录的URL∶
http://study.163.com /Personal_Spaces_List.jsp?dir=MyFolder
那现在我把这个URL改装一下:
http://study.163.com /Personal_Spaces_List.jsp?dir=./. . . . . . . . . . .. ../usr/local/tomcat/conf/
在浏览器里运行它,会是什么结果呢?
结果是: (usr/local/tomcat/conf/里的所有文件都老老实实的列出来了,通过这种方式,你可以发挥你的想象了,服务器上的东西是不是都差不多可以列出来了?是不是还可以随便下载呢?
- 解决的方案
1、同样是限制web应用在服务器上的运行
2、进行严格的输入验证,控制用户输入非法路径
上边介绍了一些常见的web安全问题及对应的解决方案,但是大家要知道web安全问题是一个系统性问题,技术的发展会导致新的问题出现。
如果觉得有收获就点个赞吧,更多知识,请点击关注查看我的主页信息哦~