网站源码常见漏洞检测分析和解决方案
漏洞是网站常见的问题,这是因为由于程序员在编写程序时直接把数据输出到浏览器客户端,这样导致用户可以提交一些特意构造的脚本代码或HTML标签代码,并在输出到浏览器时被执行所出现的问题,下面就来说说网站源码常见漏洞检测分析和解决方案。
一、常见漏洞
1、 高危漏洞
XSS跨站脚本漏洞:由于程序员在编写程序时直接把数据输出到浏览器客户端,这样导致用户可以提交一些特意构造的脚本代码或HTML标签代码,并在输出到浏览器时被执行。
SQL注入漏洞:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
网站存在备份文件:当备份文件或者修改过程中的缓存文件,被下载,导致敏感信息泄露,给服务器的安全埋下隐患。
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)将单步流程改为多步,在多步流程中引入效验码。
5)只在允许anonymous访问的地方使用动态的javascript。
6)引入用户交互,简单的一个看图识数可以堵住几乎所有的非预期特权操作。
3、目录遍历漏洞:
1)关闭Web容器(如IIS/Apache等)的目录浏览功能,比如IIS中关闭目录浏览功能:在IIS的网站属性中,勾去“目录浏览”选项;
2)在防范遍历路径漏洞的方法中,最有效的是权限的控制,谨慎的处理向文件系统API传递过来的参数路径。
3)数据净化,对网站用户提交过来的文件名进行硬编码或者统一编码,对文件后缀进行白名单控制,对包含了恶意的符号或者空字节进行拒绝。
4、后台地址泄露:
1)配置好后台登录地址的访问权限,比如只允许某个IP或IP段的用户访问;
2)将后台登录地址隐藏,改个不容易猜到的路径。
3)把网站系统后台与网站前端页面分离部署,后台系统部署在内网。
上面就是网站源码漏洞检测的介绍,若有疑问可以找小编进一步探讨交流~