常见漏洞及其解决方法精编版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常见漏洞及其解决方案
1、SQL注入漏洞
漏洞描述:
SQL注入被广泛用于非法入侵网站服务器,获取网站控制权。它是应用层上的一种安全漏洞。通常在设计存在缺陷的程序中,对用户输入的数据没有做好过滤,导致恶意用户可以构造一些SQL语句让服务器去执行,从而导致数据库中的数据被窃取,篡改,删除,以及进一步导致服务器被入侵等危害。
SQL注入的攻击方式多种多样,较常见的一种方式是提前终止原SQL语句,然后追加一个新的SQL命令。为了使整个构造的字符串符合SQL语句语法,攻击者常用注释标记如“-- ”(注意空格)来终止后面的SQL字符串。执行时,此后的文本将被忽略。如某个网站的登录验证SQL查询代码为strSQL = "SELECT * FROM users WHERE name = ‘”+ userName + “’and pw =’”+ passWord +”’”,其中userName 和passWord是用户输入的参数值,用户可以输入任何的字符串。如果用户输入的userName=admin’-- ,passWord为空,则整个SQL语句变为SELECT * FROM users WHERE name=’admin’-- ‘and pw=’’,等价于SELECT * FROM users WHERE name=’admin’,将绕过对密码的验证,直接获得以admin的身份登录系统。
漏洞危害:
•数据库信息泄漏,例如个人机密数据,帐户数据,密码等。
•删除硬盘数据,破坏整个系统的运行。
•数据库服务器被攻击,系统管理员帐户被窜改(例如ALTER LOGIN sa WITH PASSWORD='xxxxxx')。
•取得系统较高权限后,可以篡改网页以及进行网站挂马。
•经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统,植入后门程序(例如xp_cmdshell "net stop iisadmin"可停止服务器的IIS服务)。
解决方案:
•输入过滤,对于整数,判断变量是否符合[0-9]的值;其他限定值,也可以进行合法性校验;对于字符串,对SQL语句特殊字符进行转义(单引号转成两个单引号,双引号转成两个双引号)。MySQL也有类似的转义函数mysql_escape_string和mysql_real_ escape_string。Asp的过滤参考此页面/nazim/archive/ 2008/04 /28/ filtering-sql-injection-from-classic-asp.aspx
•在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。
•使用其他更安全的方式连接SQL数据库。例如已修正过SQL注入问题的数据库连接组件,例如的SqlDataSource对象或是LINQ to SQL,安全API库如ESAPI。•使用SQL防注入系统。
•严格限制数据库操作的权限。普通用户与系统管理员用户的权限要有严格的区分。建立专门的账户,同时加以权限限制,满足应用的需求即可。
2、HTTPHOST头部攻击
漏洞描述:一般通用web程序是如果想知道网站域名不是一件简单的事情,如果用一个固定的URI来作为域名会有各种麻烦。开发人员一般是依赖HTTPHostheader(比如
在php里是_SERVER["HTTP_HOST"]),而这个header很多情况下是靠不住的。而很多应用是直接把这个值不做html编码便输出到了页面中,比如:
还有的地方还包含有secretkey和token, 这样处理问题一般会很容易遭遇到两种常见的攻击:缓存污染和密码重置。缓存污染是指攻击者通过控制一个缓存系统来将一个恶意站点的页面返回给用户。密码重置这种攻击主要是因为发送给用户的内容是可以污染的,也就是说可以间接的劫持邮件发送内容。参考:/papers/1383 3、管理后台 漏洞描述:由于http请求的特点,hostheader的值其实是不可信的。唯一可信的只有SERVER_NAME,这个在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法hostheader。在Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一个SERVER_NAME名单并开启UseCanonicalName选项。建议两种方法同时使用。网站后台管理系统主要是用于对网站前台的信息管理,如文字、图片、影音、和其他日常使用文件的发布、更新、删除等操作,同时也包括会员信息、订单信息、访客信息的统计和管理。将管理后台暴露在外网,存在一定的安全风险 4、用户认证信息明文传输 漏洞描述:尽量将管理后台放在内网。并做好用户的访问权限控制,保证登录密码的复杂性。用户认证信息不是通过https加密信道传输,导致用户名密码等敏感信息泄露。 解决方案:以https方式传输此检测误报可能性较大,需要人工验证。 5、可能存在CSRF攻击 漏洞描述:CSRF是CrossSiteRequestForgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思,也就是在用户会话下对某个CGI做一些GET/POST的事情——这些事情用户未必知道和愿意做,你可以把它想做HTTP会话劫持。 解决方案:在Web应用程序侧防御CSRF漏洞,一般都是利用referer、token或者验证码jQuery是一个兼容多浏览器的javascript库,经探测,被检测系统使用的jquery 版本存在XSS漏洞。 详情请参看: /jquery_xss/ /2011/09/01/jquery-1-6-3-released/ 6、jQueryXSS 漏洞描述:jQuery是一个兼容多浏览器的javascript库,经探测,被检测系统使用的jquery版本存在XSS漏洞。