WEB开发中常见的漏洞

1、SQL注入漏洞 
SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被普遍用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能致使数据被窃取、更改、删除,以及进一步致使网站被嵌入恶意代码、被植入后门程序等危害。 
一般状况下,SQL注入的位置包括: 
(1)表单提交,主要是POST请求,也包括GET请求; 
(2)URL参数提交,主要为GET请求参数; 
(3)Cookie参数提交; 
(4)HTTP请求头部的一些可修改的值,好比Referer、User_Agent等; 
(5)一些边缘的输入点,好比.mp3文件的一些文件信息等。 
常见的防范方法 
(1)全部的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎全部的数据库系统都提供了参数化SQL语句执行接口,使用此接口能够很是有效的防止SQL注入攻击。 
(2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。 
(3)确认每种数据的类型,好比数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。 
(4)数据长度应该严格规定,能在必定程度上防止比较长的SQL注入语句没法正确执行。 
(5)网站每一个数据层的编码统一,建议所有使用UTF-8编码,上下层编码不一致有可能致使一些过滤模型被绕过。 
(6)严格限制网站用户的数据库的操做权限,给此用户提供仅仅可以知足其工做的权限,从而最大限度的减小注入攻击对数据库的危害。 
(7)避免网站显示SQL错误信息,好比类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。 
(8)在网站发布以前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。javascript


2、跨站脚本漏洞 
跨站脚本攻击(Cross-site scripting,一般简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。 
XSS攻击使用到的技术主要为HTML和JavaScript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,可是它借助网站进行传播,使网站的使用用户受到攻击,致使网站用户账号被窃取,从而对网站也产生了较严重的危害。 
XSS类型包括: 
(1)非持久型跨站:即反射型跨站脚本漏洞,是目前最广泛的跨站类型。跨站代码通常存在于连接中,请求这样的连接时,跨站代码通过服务端反射回来,这类跨站的代码不存储到服务端(好比数据库中)。上面章节所举的例子就是这类状况。 
(2)持久型跨站:这是危害最直接的跨站类型,跨站代码存储于服务端(好比数据库中)。常见状况是某用户在论坛发贴,若是论坛没有过滤用户输入的javascript代码数据,就会致使其余浏览此贴的用户的浏览器会执行发贴人所嵌入的Javascript代码。 
(3)DOM跨站(DOM XSS):是一种发生在客户端DOM(Document Object Model文档对象模型)中的跨站漏洞,很大缘由是由于客户端脚本处理逻辑致使的安全问题。 
经常使用的防止XSS技术包括: 
(1)与SQL注入防御的建议同样,假定全部输入都是可疑的,必须对全部输入中的script、iframe等字样进行严格的检查。这里的输入不只仅是用户能够直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。 
(2)不只要验证数据的类型,还要验证其格式、长度、范围和内容。 
(3)不要仅仅在客户端作数据的验证与过滤,关键的过滤步骤在服务端进行。 
(4)对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即便在输入作了编码等操做,在各处的输出点时也要进行安全检查。 
(5)在发布应用程序以前测试全部已知的威胁。html


3、弱口令漏洞 
弱口令(weak password) 没有严格和准确的定义,一般认为容易被别人(他们有可能对你很了解)猜想到或被破解工具破解的口令均为弱口令。设置密码一般遵循如下原则: 
(1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。 
(2)口令长度不小于8个字符。 
(3)口令不该该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。 
(4)口令应该为如下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。若是某类字符只包含一个,那么该字符不该为首字符或尾字符。 
(5)口令中不该包含本人、父母、子女和配偶的姓名和出生日期、记念日期、登陆名、E-mail地址等等与本人有关的信息,以及字典中的单词。 
(6)口令不该该为用数字或符号代替某些字母的单词。 
(7)口令应该易记且能够快速输入,防止他人从你身后很容易看到你的输入。 
(8)至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令。java


4、HTTP报头追踪漏洞 
HTTP/1.1(RFC2616)规范定义了HTTP TRACE方法,主要是用于客户端经过向Web服务器提交TRACE请求来进行测试或得到诊断信息。当Web服务器启用TRACE时,提交的请求头会在服务器响应的内容(Body)中完整的返回,其中HTTP头极可能包括Session Token、Cookies或其它认证信息。攻击者能够利用此漏洞来欺骗合法用户并获得他们的私人信息。该漏洞每每与其它方式配合来进行有效攻击,因为HTTP TRACE请求能够经过客户浏览器脚本发起(如XMLHttpRequest),并能够经过DOM接口来访问,所以很容易被攻击者利用。 
防护HTTP报头追踪漏洞的方法一般禁用HTTP TRACE方法。mysql


5、Struts2远程命令执行漏洞 
ApacheStruts是一款创建Java web应用程序的开放源代码架构。Apache Struts存在一个输入过滤错误,若是遇到转换错误可被利用注入和执行任意Java代码。 
网站存在远程代码执行漏洞的大部分缘由是因为网站采用了Apache Struts Xwork做为网站应用框架,因为该软件存在远程代码执高危漏洞,致使网站面临安全风险。CNVD处置过诸多此类漏洞,例如:“GPS车载卫星定位系统”网站存在远程命令执行漏洞(CNVD-2012-13934);Aspcms留言本远程代码执行漏洞(CNVD-2012-11590)等。 
修复此类漏洞,只需到Apache官网升级Apache Struts到最新版本:http://struts.apache.orgweb


6、文件上传漏洞 
文件上传漏洞一般因为网页代码中的文件上传路径变量过滤不严形成的,若是文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可经过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。 
所以,在开发网站及应用程序过程当中,需严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。sql


7、私有IP地址泄露漏洞 
IP地址是网络用户的重要标示,是攻击者进行攻击前须要了解的。获取的方法较多,攻击者也会因不一样的网络状况采起不一样的方法,如:在局域网内使用Ping指令,Ping对方在网络中的名称而得到IP;在Internet上使用IP版的QQ直接显示。最有效的办法是截获并分析对方的网络数据包。攻击者能够找到并直接经过软件解析截获后的数据包的IP包头信息,再根据这些信息了解具体的IP。 
针对最有效的“数据包分析方法”而言,就能够安装可以自动去掉发送数据包包头IP信息的一些软件。不过使用这些软件有些缺点,譬如:耗费资源严重,下降计算机性能;访问一些论坛或者网站时会受影响;不适合网吧用户使用等等。如今的我的用户采用最普及隐藏IP的方法应该是使用代理,因为使用代理服务器后,“转址服务”会对发送出去的数据包有所修改,导致“数据包分析”的方法失效。一些容易泄漏用户IP的网络软件(QQ、MSN、IE等)都支持使用代理方式链接Internet,特别是QQ使用“ezProxy”等代理软件链接后,IP版的QQ都没法显示该IP地址。虽然代理能够有效地隐藏用户IP,但攻击者亦能够绕过代理,查找到对方的真实IP地址,用户在何种状况下使用何种方法隐藏IP,也要因状况而论。shell


8、未加密登陆请求 
因为Web配置不安全,登录请求把诸如用户名和密码等敏感字段未加密进行传输,攻击者能够窃听网络以劫获这些敏感信息。建议进行例如SSH等的加密后再传输。数据库


9、敏感信息泄露漏洞 
SQL注入、XSS、目录遍历、弱口令等都可致使敏感信息泄露,攻击者能够经过漏洞得到敏感信息。针对不一样成因,防护方式不一样apache

10、CSRF 
http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html浏览器

相关文章
相关标签/搜索