一、常见漏洞
1、 高危漏洞
XSS跨站脚本漏洞:由于程序员在编写程序时对用户提交的数据没有做充分的合规性判断和进行HTML编码处理,直接把数据输出到浏览器客户端,这样导致用户可以提交一些特意构造的脚本代码或HTML标签代码,并在输出到浏览器时被执行。
SQL注入漏洞:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
网站存在备份文件:网站的使用过程中,往往需要对网站中的文件进行修改、升级。此时就需要对网站整站或者其中某一页面进行备份。当备份文件或者修改过程中的缓存文件因为各种原因而被留在网站web目录下,而该目录又没有设置访问权限时,便有可能导致备份文件或者编辑器的缓存文件被下载,导致敏感信息泄露,给服务器的安全埋下隐患。
2、 中危漏洞
目录遍历漏洞:网站存在配置缺陷,存在目录可浏览漏洞,这会导致网站很多**文件与目录泄露,比如数据库备份文件、配置文件等,攻击者利用该信息可以更容易得到网站权限,导致网站被黑。
文件上传漏洞:没有对文件上传限制, 可能会被上传可执行文件,或脚本文件进一步导致服务器沦陷。
敏感信息泄露:系统暴露内部信息,如:网站的绝对路径、网页源代码、SQL语句、中间件版本、程序异常等信息。
默认口令、弱口令:因为默认口令、弱口令很容易让人猜到。
3、低危漏洞
异常错误处理:当错误发生时,向用户提交错误提示是很正常的事情,但是如果提交的错误提示中包含了太多的内容,就有助于攻击者更全面了解网站的架构,为攻击者入侵网站提供帮助。
后台地址泄露:网站利用一些开源的软件做后台,并且没有修改后台登录地址,攻击者经常使用这个地址进行网站的后台登陆,比如弱密码、表单绕过、暴力**等,从而得到网站的权限。
Flash标签配置不当漏洞:网页在引入flash的时候,会通过object/embed标签,在设置的时候,如果一些属性配置不当,会带来安全问题:
-
allowScriptAccess:是否允许flash访问浏览器脚本。如果不对不信任的flash限制,默认会允许调用浏览器脚本,产生XSS漏洞。
always(默认值),总是允许;sameDomain,同域允许;never,不允许
-
allowNetworking:是否允许flash访问ActionScript中的网络API。如果不对不信任的flash限制,会带来flash弹窗、CSRF等问题。
all,允许所有功能,会带来flash弹窗危害;internal,可以向外发送请求/加载网页;none,无法进行任何网络相关动作(业务正常功能可能无法使用)
网站存在敏感目录:网站存在敏感目录,例如 /upload /database /bak,该信息有助于攻击者更全面了解网站的架构,为攻击者入侵网站提供帮助。
二、漏洞解决方案
1、SQL注入漏洞
1.过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等;
2.所有的查询语句都使用数据库提供的参数化查询接口,即在构造动态SQL语句时,一定要使用类安全(type-safe)的参数加码机制。
3.对进入数据库的特殊字符('"<>&*;等)进行转义处理,或编码转换。
4.确认每种数据的类型和数据长度,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
5.控制错误信息:关闭错误提示信息,将错误信息写到系统日志,防止攻击者利用这些错误信息进行一些判断。
6.锁定你的数据库的安全,只给访问数据库的web应用功能所需的最低的权限。
2、XSS跨站脚本漏洞
1.假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。
2.尽量采用POST而非GET提交表单。
3.不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
4.将单步流程改为多步,在多步流程中引入效验码。
每一步都产生一个验证码作为hidden表单元素嵌在中间页面,下一步操作时这个验证码被提交到服务器,服务器检查这个验证码是否匹配。这为攻击者增加了麻烦,而且攻击者必须在多步流程中拿到上一步产生的效验码才有可能发起下一步请求,这几乎无法做到的。
5.只在允许anonymous访问的地方使用动态的javascript。
6.引入用户交互,简单的一个看图识数可以堵住几乎所有的非预期特权操作。
3、目录遍历漏洞:
1.关闭Web容器(如IIS/Apache等)的目录浏览功能,比如IIS中关闭目录浏览功能:在IIS的网站属性中,勾去“目录浏览”选项;
2.在防范遍历路径漏洞的方法中,最有效的是权限的控制,谨慎的处理向文件系统API传递过来的参数路径。
3.数据净化,对网站用户提交过来的文件名进行硬编码或者统一编码,对文件后缀进行白名单控制,对包含了恶意的符号或者空字节进行拒绝。
4、后台地址泄露:
1.配置好后台登录地址的访问权限,比如只允许某个IP或IP段的用户访问;
2.将后台登录地址隐藏,改个不容易猜到的路径。
3.把网站系统后台与网站前端页面分离部署,后台系统部署在内网。