web应用常见安全漏洞

web应用常见安全漏洞
web应用常见安全漏洞

SQL Injection(SQL 注入)

严重性

非常高

概述

就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

原理

它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句

例子

程序从Http 请求中读取一个sql 查询,

String sql ="SELECT * FROM accountWHERE name = 'Bob'AND password = '123'" request.getParameter(sql);

...

stmt = conn.createStatement();

...

stmt.execute(sql))

在执行execute()之前,并未进行对字符串sql检查,因此存在SQL 注入弱点。

所以,当在输入密码(password = '123')之后+加上or '1'='1'则SQL查询语句变为:SELECT * FROM accountWHERE name = 'Bob'AND password = '123'or '1'='1'这样的SQL注入会使得输入任意密码进入程序,这会使WEB程序本身和使用用户产生极大的安全威胁。

后果

?挂蠕虫、木马、病毒、制作钓鱼网站

?操纵受害者的浏览器、盗取用户的cookie/referer/ip等信息

防范

1.永远不要信任用户的输入,要对用户的输入输出进行校验,可以通过正则表达式,或限制长度,或者使用过滤函数,对单引号和双"-"进行转换等。

2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。

3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

4. 不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。

5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。

Cross-Site Scripting(跨站点脚本(XSS)) 严重性

非常高

概述

它指的是恶意攻击者往Web页面或者客户端脚本的页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。

原理

Stored XSS(存储式跨站脚本攻击)

这是最强大的一种XSS攻击,所谓存储跨站攻击是指用户提交给Web应用程序的数据首先就被永久的保存在服务器的数据库,文件系统或其他地方,后面且未做任何编码就能显示到Web页面。

Reflected XSS(反射跨站脚本攻击)

当Web客户端提交数据后,服务器端立刻为这个客户生成结果页面,如果结果页面中包含未验证的客户端输入数据,那么就会允许客户端的脚本直接注入到动态页面中。传统的例子是站点搜索引擎,如果我们搜索一个包含特殊HTML字符的字符串时,通常在返回页面

上仍然会有这个字符串来告知我们搜索的是什么,如果这些返回的字符串未被编码,那么,就会存在XSS漏洞了。

DOM-Based XSS(基于DOM的XSS)

这个漏洞往往存在于客户端脚本,如果一个Javascript脚本访问需要参数的URL,且需要将该信息用于写入自己的页面,且信息未被编码,那么就有可能存在这个漏洞。

例子

Stored XSS(存储式跨站脚本攻击):

后果

如上图所示,不怀好意好意的用户会把恶意代码,如:JavaScript, VBScript, ActiveX, HTML 或Flash等,把它们嵌入到发布的信息中去,然后发送到服务器中,如果服务器没有很好的校验信息,直接把信息转发到用户,这将导致一场XSS攻击灾难。

Reflected XSS(反射跨站脚本攻击)

下面的Java 代码从HTTP Request 中读取一个用户输入、user、再显示给用户

...

out.print(request.getParameter("user"));

...

下面的Jsp 代码从HTTP Request 中读取一个用户输入、user、再显示给用户

...

<%=request.getParameter("user")%>

...

如果可以将未经验证的用户输入直接写入网页,因此这个应用程序就存在跨站点脚本的弱点。设想一下,一个恶意网站使用iframe、连接、图片URL 或表单传送到这个URL :https://www.360docs.net/doc/8c11474289.html,/insecurepage.jsp?user=admin通过构造带有参数的恶意URL攻击,因为没有验证,所以攻击者可以看到许多网站机密的信息。

后果

机密性:跨站点脚本弱点最严重的后果是储存在用户cookies中的信息外泄。这包括可以让攻击者劫持用户的网络服务进程,并让攻击者能使用该用户的相关帐号。

在某些情况下,有可能迫使用户的浏览器执行恶意代码,将受害用户转到含有恶意内容的其他网页,以便于安装木马或结合其他的弱点以存取本机资料。

例子

DOM-Based XSS(基于DOM的XSS)

如上图所示,攻击者构造一个包含恶意Javascript的URL,然后引诱用户请求这个URL。服务器收到请求后没有返回恶意的Javascript。浏览器在处理URL中的数据时,执行恶意代码。

防范

1.校验用户输入,就是只接受有效的数据,如标头、cookies、查询字符串、表单字段以及隐藏字段等,确认是否是正确的数据,拒绝其他所有数据。

2.HTML编码输出:为了在浏览器中正确地呈现“<”,“>”或空格等文本时,我们需要对其进行编码处理,否则浏览器将根据这些特性文本去执行其功能,而不是正确的呈现在页面上。

Cross Site Request Forgery跨站请求伪造(CSRF)严重性

概述

尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

原理

在用户会话下对某个CGI做一些GET/POST的事情——这些事情用户未必知道和愿意做,你可以把它想做HTTP会话劫持。攻击通过在授权用户访问的页面中包含链接或者脚本的方式工作。

例子

一个网站用户Bob可能正在浏览聊天论坛,而同时另一个用户Alice也在此论坛中,并

且后者刚刚发布了一个具有Bob银行链接的图片消息。设想一下,Alice编写了一个在Bob 的银行站点上进行取款的form提交的链接,并将此链接作为图片tag。如果Bob的银行在cookie中保存他的授权信息,并且此cookie没有过期,那么当Bob的浏览器尝试装载图片时将提交这个取款form和他的cookie,这样在没经Bob同意的情况下便授权了这次事务。

CSRF是一种依赖web浏览器的、被混淆过的代理人攻击(deputy attack)。在上面银行示例中的代理人是Bob的web浏览器,它被混淆后误将Bob的授权直接交给了Alice使用。

后果

获得管理员权限。盗取用户银行卡、信用卡信息。授信用户被提交恶意数据、被执行恶意操作。

防范

1.服务器区分GET/POST,增加攻击难度

2.REFERER校验,补充手段

3.改长授信为短授信。时间戳、关键流程使用验证码、Token验证

错误认证和会话管理

(Session Variable Poisoning)

严重性

概述

“遭破坏的认证和会话管理”,简而言之,就是攻击者窃听了我们访问HTTP时的用户名和密码,或者是我们的会话,从而得到sessionID,进而冒充用户进行Http访问的过程。

原理

由于HTTP本身是无状态的,也就是说HTTP的每次访问请求都是带有个人凭证的,而SessionID就是为了跟踪状态的,而sessionID本身是很容易在网络上被监听的到,所以攻击者往往通过监听sessionID来达到进一步攻击的目的。

错误的认证:窃取用户名、密码。明文传输。认证漏洞。

会话管理:窃取会话的SessionId,冒充真正用户进行web应用访问。

防范

第一,我们要整体审视我们的架构

●认证机制本身必须是简单、集中和标准化的;

●使用容器提供给我们的标准session id;

●确保在任何时候用SSL来保护我们的密码和session id

第二,验证认证的实现机制

●检查SSL的实现方法

●验证所有与认证相关的函数

●确保“注销登录”的动作能够关闭所有的会话

未验证的重定向和传递(Open Redirect)

概述

在Web应用中重定向是极为普遍的,并且通常重定向所引向的目的是带有用户输入参数的目的URL,而如果这些重定向未被验证,那么攻击者就可以引导用户访问他们所要用户访问的站点。

原理

转发是在同一个应用中对一个新页面发送请求,并且有时是用参数来定义目标页面的。同样,如果参数未被验证,那么攻击者就可以利用其来绕过认证或是授权检查。

后果

而最终造成的后果,重定向会使得用户访问钓鱼网站或是恶意网站,而转发则会让攻击者利用先前安全检查过的请求来绕过认证或是授权。

1. 尽可能的避免使用重定向和转发机制;

2. 如果使用了,那么在定义目标url的时候不要包含用户参数;

3. 如果一定要包含用户的参数,那么,对每个参数都必须进行验证以确保它的正确性和合法性;或是在服务器端提供映射机制,将用户的选择参数转变为真正的目标页面;

HTTP 应答分割(HTTP Response Splitting) 严重性

概述

发生在未经验证的数据被写入HTTP标头时,这样可能会允许攻击者获取指定的浏览器提供的HTTP相应的全部数据。

原理

HTTP 应答分割弱点可能发生在出现下列情况时:

数据由不被信任的来源进入网络应用程序,大多是通过HTTP请求。

这样的数据被加入到HTTP应答的标头中,并且在没有被检查是否含有恶意字符的情况下,传送给用户。

后果

可信度:HTTP应答分割可以用来篡改HTTP应答。

认证:HTTP应答分割可以用来复写cookies 并绕过认证。

防范

最佳的解决办法就是验证输入。在送入HTTP应答标头之前(尤其是设定cookies 和重新导向时)将CR 和LF (包括其他所有的有害的字符)移除。也可以使用第三方产品对CR 及LF 进行防护,或者是在部署应用程序前测试是否存在这样的弱点。

不安全的加密存储

严重性

概述

加密有助于防止他人查看敏感数据,而且可提供监测数据是否已被修改的用加密算法对数据进行加密,在加密状态传输数据,然后由预定的接收方对数据进行解密。

原理

1. 未能识别全部的机密数据;

2. 对某个机密数据未能识别其所有的存放地;(数据库、文件、目录、日志文件……)

3. 未对数据的每个存放地进行合理的保护

后果

1.攻击者能够取得或是篡改机密的或是私有的信息;

2. 攻击者通过这些秘密的窃取从而进行进一步的攻击;

3. 造成企业形象破损,用户满意度下降,甚至会有法律诉讼等;

防范

1.验证你的结构

识别所有的敏感数据;识别这些数据存放的所有位置;确保所应用的威胁模型能够应付这些攻击;使用加密手段来应对威胁

2.使用一定的机制来进行保护

文件加密;数据库加密;数据元素加密

3.正确的使用这些机制

使用标准的强算法;合理的生成,分发和保护密钥;准备密钥的变更

4.验证实现方法

确保使用了标准的强算法;确保所有的证书、密钥和密码都得到了安全的存放;有一个安全的密钥分发和应急处理的方案;

安全误配置(Security Misconfiguration)严重性

概述

Web服务器位于宿主基础结构的前端。它可以直接连接到Internet,负责接收来自客户端的请求、创建动态Web页面并对请求的数据做出相应。安全的Web服务器可为宿主的环境提供可靠的基础、对整个安全方面其重要作用。

后果

安全误配置往往使得攻击者能够访问未被授权的系统数据和功能,甚至有时,会导致整个系统被破坏。

防范

问题可能存在于Web应用的各个层次,譬如平台、Web服务器、应用服务器,系统框架,甚至是代码中。开发人员需要和网络管理人员共同确保所有层次都合理配置.。

一些注意事项

文件上传

Web应用程序在处理用户上传的文件时,没有判断文件的扩展名是否在允许的范围内,或者没检测文件内容的合法性,就把文件保存在服务器上,甚至上传脚本木马到web服务器上,直接控制web服务器。

1. 未限制扩展名

2. 未检查文件内容

3. 病毒文件

不恰当的异常处理

程序在抛出异常的时候给出了比较详细的内部错误信息,暴露了网站存在潜在漏洞;

最受欢迎的十大WEB应用安全评估系统

最受欢迎的十大WEB应用安全评估系统 在国内一些网站上经常看到文章说某某WEB应用安全评估工具排名,但是很可惜,绝大多数都是国外人搞的,界面是英文,操作也不方便,那游侠就在这里综合下,列举下国内WEB安全评估人员常用的一些工具。当然,毫无疑问的,几乎都是商业软件,并且为了描述更准确,游侠尽量摘取其官方网站的说明: 1.IBM Rational AppScan IBM公司推出的IBM Rational AppScan产品是业界领先的应用安全测试工具,曾以Watchfire AppScan 的名称享誉业界。Rational AppScan 可自动化Web 应用的安全漏洞评估工作,能扫描和检测所有常见的Web 应用安全漏洞,例如SQL 注入(SQL-injection)、跨站点脚本攻击(cross-site scripting)及缓冲溢出(buffer overflow)等方面安全漏洞的扫描。 游侠标注:AppScan不但可以对WEB进行安全评估,更重要的是导出的报表相当实用,也是国外产品中唯一可以导出中文报告的产品,并且可以生成各种法规遵从报告,如ISO 27001、OWASP 2007等。 2.HP WebInspect

目前,许多复杂的Web 应用程序全都基于新兴的Web 2.0 技术,HP WebInspect 可以对这些应用程序执行Web 应用程序安全测试和评估。HP WebInspect 可提供快速扫描功能、广泛的安全评估范围及准确的Web 应用程序安全扫描结果。 它可以识别很多传统扫描程序检测不到的安全漏洞。利用创新的评估技术,例如同步扫描和审核(simultaneous crawl and audit, SCA)及并发应用程序扫描,您可以快速而准确地自动执行Web 应用程序安全测试和Web 服务安全测试。 主要功能: ·利用创新的评估技术检查Web 服务及Web 应用程序的安全 ·自动执行Web 应用程序安全测试和评估 ·在整个生命周期中执行应用程序安全测试和协作 ·通过最先进的用户界面轻松运行交互式扫描 ·满足法律和规章符合性要求 ·利用高级工具(HP Security Toolkit)执行渗透测试 ·配置以支持任何Web 应用程序环境 游侠标注:毫无疑问的,WebInspect的扫描速度相当让人满意。 3.Acunetix Web Vulnerability Scanner

浅谈WEB应用安全问题及防范

浅谈WEB应用安全问题及防范 随着WEB应用技术的发展,越来越多的企业或学校使用WEB应用来进行企业或学校信息开放性管理,使机构管理信息暴露在越来越多的威胁中。由于WEB应用具有一定的运行特点,传统防火墙对于其存在的安全问题缺少针对性和有效性,新的防护工具——Web应用防火墙应运而生。 标签:web应用开放性安全问题Web防火墙 随着信息资源逐渐向数据高度集中的模式,Web成为一种普适平台,Web 应用成为了越来越多的企业或学校进行核心业务及信息管理的承载者。Web应用提供了丰富的开放资源和高效率的新工作方式,但它的开放性、易用性和易开发性同样也使Web应用的安全问题日益突出,已成为了网络安全核心问题之一。 1 Web应用的工作原理和特点 Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。 目前广泛使用的Web应用程序一般是B/S模式,使用标准的三层架构模型:第一层是客户端;使用动态Web内容技术的部分属于中间层;数据库是第三层。在B/S模式中,客户端运行浏览器软件。浏览器以超文本形式向Web服务器提出访问数据库的要求,Web服务器接受客户端请求后,将这个请求转化为SQL 语法,并交给数据库服务器,数据库服务器得到请求后,验证其合法性,并进行数据处理,然后将处理后的结果返回给Web服务器,Web服务器再一次将得到的所有结果进行转化,变成HTML文档形式,转发给客户端浏览器以友好的Web 页面形式显示出来。 因此,Web应用具有以下特点: 1.1 易用性 Web应用所基于的Web浏览器的界面都很相似,对于无用户交互功能的页面,用户接触的界面都是一致的,因此Web应用的操作简单易上手。 1.2 开放性 在Web应用的B/S模式下,除了内部人员可以访问,外部的用户亦可通过通用的浏览器进行访问,并且不受浏览器的限制。 1.3 易扩展性

五个常见的Web应用漏洞及其解决方法

五个常见的Web应用漏洞及其解决方法开放Web应用安全项目(OW ASP)很快会发布今年的10大Web应用安全漏洞清单。这个清单与去年并没有太大差别,这表明负责应用设计与开发的人仍然没能解决以前那些显而易见的错误。许多最常见的Web应用漏洞仍然广泛存在,许多恶意软件搜索和攻击这些漏洞,连黑客新手都能轻松做到。 本文介绍了5个最常见的Web应用漏洞,以及企业该如何修复初级问题,对抗那些针对这些漏洞的攻击。 注入攻击和跨站脚本攻击 Web应用主要有2种最常见的严重缺陷。首先是各种形式的注入攻击,其中包括SQL、操作系统、电子邮件和LDAP注入,它们的攻击方式都是在发给应用的命令或查询中夹带恶意数据。别有用心的数据可以让应用执行一些恶意命令或访问未授权数据。如果网站使用用户数据生成SQL查询,而不检查用户数据的合法性,那么攻击者就可能执行SQL注入。这样攻击者就可以直接向数据库提交恶意SQL查询和传输命令。举例来说,索尼的PlayStation 数据库就曾经遭遇过SQL注入攻击,并植入未授权代码。 跨站脚本(XSS)攻击会将客户端脚本代码(如JavaScript)注入到Web应用的输出中,从而攻击应用的用户。只要访问受攻击的输出或页面,浏览器就会执行代码,让攻击者劫持用户会话,将用户重定向到一个恶意站点或者破坏网页显示效果。XSS攻击很可能出现在动态生成的页面内容中,通常应用会接受用户提供的数据而没有正确验证或转码。 为了防御注入攻击和XSS攻击,应用程序应该配置为假定所有数据——无论是来自表单、URL、Cookie或应用的数据库,都是不可信来源。要检查所有处理用户提供数据的代码,保证它是有效的。验证函数需要清理所有可能有恶意作用的字符或字符串,然后再将它传给脚本和数据库。要检查输入数据的类型、长度、格式和范围。开发者应该使用现有的安全控制库,如OW ASP的企业安全API或微软的反跨站脚本攻击库,而不要自行编写验证代码。此外,一定要检查所有从客户端接受的值,进行过滤和编码,然后再传回给用户。 身份验证和会话管理被攻破 Web应用程序必须处理用户验证,并建立会话跟踪每一个用户请求,因为HTTP本身不具备这个功能。除非任何时候所有的身份验证信息和会话身份标识都进行加密,保证不受其他缺陷(如XSS)的攻击,否则攻击者就有可能劫持一个激活的会话,伪装成某个用户的身份。如果一个攻击者发现某个原始用户未注销的会话(路过攻击),那么所有帐号管理功能和事务都必须重新验证,即使用户有一个有效的会话ID。此外,在重要的事务中还应该考虑使用双因子身份验证。 为了发现身份验证和会话管理问题,企业要以执行代码检查和渗透测试。开发者可以使用自动化代码和漏洞扫描程序,发现潜在的安全问题。有一些地方通常需要特别注意,其中包括会话身份标识的处理方式和用户修改用户身份信息的方法。如果没有预算购买商业版本,那么也可以使用许多开源和简化版本软件,它们可以发现一些需要更仔细检查的代码或进程。

常见WEB安全漏洞及整改建议

常见WEB安全漏洞及整改建议 1. HTML表单没有CSRF保护 1.1 问题描述: CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。 CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账……造成的问题包括:个人隐私泄露以及财产安全。 1.2 整改建议: CSRF的防御可以从服务端和客户端两方面着手,防御效果是从服务端着手效果比较好,现在一般的CSRF防御也都在服务端进行。有以下三种方法: (1).Cookie Hashing(所有表单都包含同一个伪随机值): (2).验证码 (3).One-Time Tokens(不同的表单包含一个不同的伪随机值) 1.3 案例: 1.服务端进行CSRF防御 服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数。 1.3.1 Cookie Hashing(所有表单都包含同一个伪随机值): 这可能是最简单的解决方案了,因为攻击者不能获得第三方的Cookie(理论上),所以表单中的数据也就构造失败.

//构造加密的Cookie信息 $value = “DefenseSCRF”; setcookie(”cookie”, $value, time()+3600); ?> 在表单里增加Hash值,以认证这确实是用户发送的请求。 $hash = md5($_COOKIE['cookie']); ?> ”> 然后在服务器端进行Hash值验证 if(isset($_POST['check'])) { $hash = md5($_COOKIE['cookie']); if($_POST['check'] == $hash) { doJob(); } else {

十大常见漏洞

Web应用常见的安全漏洞有哪些 随着存在安全隐患的Web应用程序数量的骤增,Open Web Application Security Project (开放式Web应用程序安全项目,缩写为OWASP)总结出了现有Web应用程序在安全方面常见的十大漏洞,以提醒企业及其程序开发人员尽量避免它们给企业IT系统带来的安全风险: 一、非法输入 Unvalidated Input 在数据被输入程序前忽略对数据合法性的检验是一个常见的编程漏洞。随着OWASP对Web应用程序脆弱性的调查,非法输入的问题已成为大多数Web应用程序安全漏洞方面的一个普遍现象。 二、失效的访问控制 Broken Access Control 大部分企业都非常关注对已经建立的连接进行控制,但是,允许一个特定的字符串输入可以让攻击行为绕过企业的控制。 三、失效的账户和线程管理 Broken Authentication and Session Management 有良好的访问控制并不意味着万事大吉,企业还应该保护用户的密码、会话令牌、

账户列表及其它任何可为攻击者提供有利信息、能帮助他们攻击企业网络的内容。 四、跨站点脚本攻击 XSS 跨站漏洞以及钓鱼式攻击 XSS,中文名称为跨站脚本,是一种很常见的脚本漏洞。因为跨站脚本攻击不能直接对系统进行攻击,所以往往被人们忽视。 由于WEB应用程序没有对用户的输入进行严格的过滤和转换,就导致在返回页面中可能嵌入恶意代码。远程攻击者可以利用这些漏洞在用户浏览器会话中执行任意HTML和脚本代码。跨站脚本执行漏洞的攻击效果需要借助第三方网站来显现,此这种攻击能在一定程度上隐藏身份。 由于跨站脚本不能直接对系统进行攻击,所以跨站脚本总是伴随社会工程学来 实现攻击的,这种攻击的主要表现形式是钓鱼式攻击。钓鱼式攻击方式有很多,如获取Cookie, 伪造页面,屏蔽页面特定信息,与其它漏洞结合攻击操作系统等等。钓鱼式攻击是针对人脑的攻击方式,它的传播手段有EMAIL、IM、聊天室、恶意连接、游戏中的聊天系统,凡是能实现用户之间互动操作的系统都存在钓鱼式攻击的风险。 在电子商务蓬勃发展的今天,针对个人财务信息的钓鱼攻击事件数量成直线上升,其中一个主要攻击途径就是跨站脚本执行漏洞。据统计,国内外存在跨站脚本漏洞的网站多达60%, 其中包括许多大型知名网站。 这是一种常见的攻击,当攻击脚本被嵌入企业的Web页面或其它可以访问的Web 资源中,没有保护能力的台式机访问这个页面或资源时,脚本就会被启动,这种攻击可以影响企业内成百上千员工的终端电脑。 网站开发者角度,如何防护XSS攻击? 对XSS最佳的防护应该结合以下两种方法:验证所有输入数据,有效检 测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。 网站用户角度,如何防护XSS攻击? 当你打开一封Email或附件、浏览论坛帖子时,可能恶意脚本会自动执行,因此,在做这些操作时一定要特别谨慎。建议在浏览器设置中关闭

常见安全漏洞的处理及解决方法

相关名词解释、危害与整改建议 1、网站暗链 名词解释 “暗链”就是看不见的网站链接,“暗链”在网站中的链接做的非常隐蔽,短时间内不易被搜索引擎察觉。它和友情链接有相似之处,可以有效地提高PR值。但要注意一点PR值是对单独页面,而不是整个网站。 危害: 网站被恶意攻击者插入大量暗链,将会被搜索引擎惩罚,降低权重值;被插入大量恶意链接将会对网站访问者造成不良影响;将会协助恶意网站(可能为钓鱼网站、反动网站、赌博网站等)提高搜索引擎网站排名。可被插入暗链的网页也意味着能被篡改页面内容。 整改建议: 加强网站程序安全检测,及时修补网站漏洞; 对网站代码进行一次全面检测,查看是否有其余恶意程序存在; 建议重新安装服务器及程序源码,防止无法到检测深度隐藏的恶意程序,导致重新安装系统后攻击者仍可利用后门进入。 2、网页挂马 名词解释 网页挂马是通过在网页中嵌入恶意程序或链接,致使用户计算机在访问该页面时触发执行恶意脚本,从而在不知情的情况下跳转至“放马

站点”(指存放恶意程序的网络地址,可以为域名,也可以直接使用IP地址),下载并执行恶意程序。 危害: 利用IE浏览器漏洞,让IE在后台自动下载黑客放置在网站上的木马并运行(安装)这个木马,即这个网页能下载木马到本地并运行(安装)下载到本地电脑上的木马,整个过程都在后台运行,用户一旦打开这个网页,下载过程和运行(安装)过程就自动开始,从而实现控制访问者电脑或安装恶意软件的目的。 整改建议: 加强网站程序安全检测,及时修补网站漏洞; 对网站代码进行一次全面检测,查看是否有其余恶意程序存在; 建议重新安装服务器及程序源码,防止有深度隐藏的恶意程序无法检测到,导致重新安装系统后攻击者仍可利用后门进入。 3、SQL注入 名词解释 SQL注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL 命令。 危害: 可能会查看、修改或删除数据库条目和表。严重的注入漏洞还可能以当然数据库用户身份远程执行操作系统命令。

常见安全漏洞和解决方案

1.1身份认证安全 1.1.1弱密码 ●密码长度6个字符以上 ●密码字符必须包含大写字母、小写字母和数字,并进行密码复杂度检查 ●强制定期更换密码 1.1.2密码存储安全 密码存储必须使用单向加密 单纯的md5,sha1容易被破解,需要添加随机的盐值salt 涉及支付及财产安全的需要更高的安全措施,单纯的密码加密已经不能解决问题。 可以考虑手机验证码、数字证书、指纹验证。 1.1.3密码传输安全 1.1.3.1密码前端加密 用户名、密码传输过程对称加密,可以使用密钥对的对称加密,前端使用公钥加密,后端使用私钥解密。 前端加密示例

注意:前端密码加密如果还用了md5加密的,先md5加密再rsa加密。 后端解密,省略了其他验证步骤 1.1.3.2启用https协议 登录页面、支付页面等高危页面强制https协议访问。 前端加密和https可以结合使用 1.2SQL注入 1.2.1描述 SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应

用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 1.2.2解决办法 1.养成编程习惯,检查用户输入,最大限度的限制用户输入字符集合。 2.不要把没有检查的用户输入直接拼接到SQL语句中,断绝SQL注入的注入点。 ●SQL中动态参数全部使用占位符方式传参数。 正确 ●如果不能使用占位符的地方一定要检查SQL中的特殊符号和关键字,或者启用用户输 入白名单,只有列表包含的输入才拼接到SQL中,其他的输入不可以。 1.2.3应急解决方案 nginx 过滤规则naxsi模块

常见WEB安全漏洞及整改建议

2. jQuery 跨站脚本漏洞 2.1 问题描述 jQuery是继prototype之后又一个优秀的Javascrīpt框架。 jQuery 1.6.3之前版本中存在跨站脚本漏洞。当使用location.hash选择元素时,通过特制的标签,远程攻击者利用该漏洞注入任意web脚本或HTML。 2.2 整改方法 目前厂商已经发布了升级补丁以修复此安全问题,补丁获取: .ubuntu./usn/USN-1722-1/ 2.3 整改案例 升级jQuery版本。 3. 跨站脚本编制 3.1 问题描述: 跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息的方式诱使管理员浏览,从而获得管理员权限,控制整个。攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇请求、修改口令和下载非法的容等请求。 风险等级:高 风险围: 任何存在输入/输出方法(包括GET与POST)的页面皆可能存在恶意符号输入缺陷,主要影响应用包括留言板、在线通讯信息、文章发布页面等。 3.2 整改建议: 对用户输入的参数执行严格检测: 1、对产生漏洞模块的传入参数进行有效性检测。int类型的只允许0-9的整型数字;string等字符类型的只允许(1-9,a-z,A-Z)的英文字母; 2、当客户端输入限定值意外的字符后,立即转向自定义的错误页,而不能使用服务器默认的错误输出方式; 3、对穿入参数进行危险字符过滤,禁止('、"、+、%、&、<>、()、;、,.等)特殊字符的传入。 3.3 案例: 加固例(一): /*将login.jsp中[String u =request.getParameter("u");]替换为如下容:*/ String u = request.getParameter("u"); u = u.replace ('<','_'); u = u.replace ('>','_'); u = u.replace('"','_');

web应用常见安全漏洞

SQL Injection(SQL 注入) 严重性 非常高 概述 就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 原理 它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句 例子 程序从Http 请求中读取一个sql 查询, String sql ="SELECT * FROM accountWHERE name = 'Bob'AND password = '123'" request.getParameter(sql); ... stmt = conn.createStatement(); ... stmt.execute(sql)) 在执行execute()之前,并未进行对字符串sql检查,因此存在SQL 注入弱点。 所以,当在输入密码(password = '123')之后+加上or '1'='1'则SQL查询语句变为:SELECT * FROM accountWHERE name = 'Bob'AND password = '123'or '1'='1'这样的SQL注入会使得输入任意密码进入程序,这会使WEB程序本身和使用用户产生极大的安全威胁。 后果 ?挂蠕虫、木马、病毒、制作钓鱼网站 ?操纵受害者的浏览器、盗取用户的cookie/referer/ip等信息

防范 1.永远不要信任用户的输入,要对用户的输入输出进行校验,可以通过正则表达式,或限制长度,或者使用过滤函数,对单引号和双"-"进行转换等。 2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。 3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。 4. 不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。 5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。 Cross-Site Scripting(跨站点脚本(XSS)) 严重性 非常高 概述 它指的是恶意攻击者往Web页面或者客户端脚本的页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。 原理 Stored XSS(存储式跨站脚本攻击) 这是最强大的一种XSS攻击,所谓存储跨站攻击是指用户提交给Web应用程序的数据首先就被永久的保存在服务器的数据库,文件系统或其他地方,后面且未做任何编码就能显示到Web页面。 Reflected XSS(反射跨站脚本攻击) 当Web客户端提交数据后,服务器端立刻为这个客户生成结果页面,如果结果页面中包含未验证的客户端输入数据,那么就会允许客户端的脚本直接注入到动态页面中。传统的例子是站点搜索引擎,如果我们搜索一个包含特殊HTML字符的字符串时,通常在返回页面

javaWeb安全验证漏洞修复总结

EMA服务管理平台二期扩容安全验收 漏洞修复总结 2011年5月

目录 1WEB安全介绍 (1) 2SQL注入、盲注 (1) 2.1SQL注入、盲注概述 (1) 2.2安全风险及原因 (2) 2.3A PP S CAN扫描建议 (2) 2.4应用程序解决方案 (4) 3会话标识未更新 (7) 3.1会话标识未更新概述 (7) 3.2安全风险及原因分析 (8) 3.3A PP S CAN扫描建议 (8) 3.4应用程序解决方案 (8) 4已解密登录请求 (9) 4.1已解密登录请求概述 (9) 4.2安全风险及原因分析 (9) 4.3A PP S CAN扫描建议 (9) 4.4应用程序解决方案 (9) 5跨站点请求伪造 (11) 5.1跨站点请求伪造概述 (11) 5.2安全风险及原因分析 (12) 5.3A PP S CAN扫描建议 (13) 5.4应用程序解决方案 (13) 6不充分账户封锁 (13) 6.1不充分账户封锁概述 (13) 6.2安全风险及原因分析 (13) 6.3A PP S CAN扫描建议 (14) 6.4应用程序解决方案 (14) 7启用不安全HTTP方法 (14) 7.1启用不安全HTTP方法概述 (14) 7.2安全风险及原因分析 (15) 7.3A PP S CAN扫描建议 (15) 7.4应用程序解决方案 (15) 8HTTP注释敏感信息 (16) 8.1HTTP注释敏感信息概述 (16) 8.2安全风险及原因分析 (16) 8.3A PP S CAN扫描建议 (16) 8.4应用程序解决方案 (17) 9发现电子邮件地址模式 (17)

web应用的漏洞分类

Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务的统称。随着互联网的广泛使用,Web应用已经融入到日常生活中的各个方面:网上购物、网络银行应用、证券股票交易、政府行政审批等等。在这些Web 访问中,大多数应用不是静态的网页浏览,而是涉及到服务器侧的动态处理。此时,如果Java、PHP、ASP 等程序语言的编程人员的安全意识不足,对程序参数输入等检查不严格等,会导致Web应用安全问题层出不穷。 本文根据当前Web应用的安全情况,列举了Web应用程序常见的攻击原理及危害,并给出如何避免遭受Web 攻击的建议。 1Web应用漏洞原理 Web应用攻击是攻击者通过浏览器或攻击工具,在URL或者其它输入区域(如表单等),向Web服务器发送特殊请求,从中发现Web应用程序存在的漏洞,从而进一步操纵和控制网站,查看、修改未授权的信息。 1.1Web应用的漏洞分类 1、信息泄露漏洞 信息泄露漏洞是由于Web服务器或应用程序没有正确处理一些特殊请求,泄露Web服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。 造成信息泄露主要有以下三种原因: ?Web服务器配置存在问题,导致一些系统文件或者配置文件暴露在互联网中; ?Web服务器本身存在漏洞,在浏览器中输入一些特殊的字符,可以访问未授权的文件或者动态脚本文件源码; ?Web网站的程序编写存在问题,对用户提交请求没有进行适当的过滤,直接使用用户提交上来的数据。 2、目录遍历漏洞 目录遍历漏洞是攻击者向Web服务器发送请求,通过在URL中或在有特殊意义的目录中附加“../”、或者附加“../”的一些变形(如“..\”或“..//”甚至其编码),导致攻击者能够访问未授权的目录,以及在Web服务器的根目录以外执行命令。 3、命令执行漏洞 命令执行漏洞是通过URL发起请求,在Web服务器端执行未授权的命令,获取系统信息,篡改系统配置,控制整个系统,使系统瘫痪等。 命令执行漏洞主要有两种情况:

Web应用中常见39种不同的安全漏洞漏洞分析及检查方法

Web应用中常见39种不同的安全漏洞漏洞分析及检查方法 1.1SQL注入漏洞 风险等级:高危 漏洞描述: SQL注入漏洞产生的原因是网站应用程序在编写时未对用户提交至服务器的数据进行合法性校验,即没有进行有效地特殊字符过滤,导致网站服务器存在安全风险,这就是SQL Injection,即SQL注入漏洞。 漏洞危害: 1) 机密数据被窃取; 2) 核心业务数据被篡改; 3) 网页被篡改; 4) 数据库所在服务器被攻击从而变为傀儡主机,导致局域网(内网)被入侵。 修复建议: 1)在网页代码中对用户输入的数据进行严格过滤;(代码层) 2)部署Web应用防火墙;(设备层) 3)对数据库操作进行监控。(数据库层) 代码层最佳防御sql漏洞方案:采用sql语句预编译和绑定变量,是防御sql注入的最佳方法。 原因:采用了PreparedStatement,就会将sql语句:"select id, no from user where id=?" 预先编译好,也就是SQL引擎会预先进行语法分析,产生语法树,生成执行计划,也就是说,后面你输入的参数,无论你输入的是什么,都不会影响该sql语句的语法结构了,因为语法分析已经完成了,而语法分析主要是分析sql

命令,比如select ,from ,where ,and, or ,order by 等等。所以即使你后面输入了这些sql命令,也不会被当成sql命令来执行了,因为这些sql命令的执行,必须先的通过语法分析,生成执行计划,既然语法分析已经完成,已经预编译过了,那么后面输入的参数,是绝对不可能作为sql命令来执行的,只会被当做字符串字面值参数,所以sql语句预编译可以防御sql注入。 其他防御方式:正则过滤 1.2目录遍历漏洞 风险等级:中危 漏洞描述: 通过该漏洞可以获取系统文件及服务器的配置文件。利用服务器API、文件标准权限进行攻击。 漏洞危害: 黑客可获得服务器上的文件目录结构,从而下载敏感文件。 修复建议: 1)通过修改配置文件,去除中间件(如IIS、apache、tomcat)的文件目录索引功能 2)设置目录权限 3)在每个目录下创建一个空的index.html页面。 1.3跨站脚本漏洞 即XSS漏洞,利用跨站脚本漏洞可以在网站中插入任意代码,它能够获取网站管理员或普通用户的cookie,隐蔽运行网页木马,甚至格式化浏览者的硬盘。

常见WEB开发安全漏洞原因分析及解决

常见WEB开发安全漏洞原因分析及解决

目录 1会话标识未更新 (3) 1.1原因 (3) 1.2解决 (3) 2SQL注入 (3) 2.1原因 (3) 2.2解决 (5) 3XSS跨站脚本编制 (5) 3.1原因 (5) 3.2解决 (5) 4XSRF跨站请求伪造 (7) 4.1原因 (7) 4.2解决 (8) 5登录错误消息凭证枚举(不充分帐户封锁) (8) 5.1原因 (8) 5.2解决 (8) 6HTML注释敏感信息泄露 (9) 6.1原因 (9) 6.2解决 (9) 7应用程序错误 (9) 7.1原因 (9) 7.2解决 (9) 8已解密的登录请求 (9) 8.1原因 (9) 8.2解决 (9) 9启用了不安全的HTTP方法 (10) 9.1原因 (10) 9.2解决 (10) 10禁止页面缓存 (11) 10.1原因 (11) 10.2解决 (11) 11数据库错误模式 (11) 11.1原因 (11) 11.2解决 (12)

1 会话标识未更新 1.1 原因 在用户进入登录页面,但还未登录时,就已经产生了一个session,用户输入信息,登录以后,session的id不会改变,也就是说还是以前的那个session(事实上session也确实不会改变,因为没有建立新session,原来的session也没有被销毁)。 很多人只是让会话invalidate没有用(request.getSession().invalidate();),是因为invalidate方法不是真正的将session销毁,只是将session中的内容清空,所以当invalidate以后再新建session,新建的session其实不是新的,是将之前的session重新启用了。于是session的id 不变就不奇怪了。只有cookie失效掉,才能换成新的session id 1.2 解决 在登录页面上加上一段代码: request.getSession().invalidate() ; //清空session if (request.getCookies()!=null) { Cookie cookie = request.getCookies()[0]; // 获取cookie cookie.setMaxAge(0); // 让cookie过期 } 注:会话失效后,请不要在代码前面使用SESSION保存数据。 2 SQL注入 2.1 原因 1. 没有正确过滤转义字符 在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL 语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,下面的这行代码就会演示这种漏洞: statement := "SELECT * FROM users WHERE name = '" + userName + "'; " 将用户名变量(即username)设置为:a' or 't'='t,此时原始语句发生了变化. 2. 用户输入错误的数据类型 如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。

相关文档
最新文档