最全常见Web安全漏洞总结及推荐解决⽅案
常见Web安全漏洞总结及推荐解决⽅案
1.SQL注⼊:
SQL注⼊(SQL Injection),是⼀个常见的发⽣于应⽤程序和数据库之间的web安全漏洞,由于在开发过程中的设计不当导致程序中忽略了检查,没有有效的过滤⽤户的输⼊,是攻击者可以向服务器提交不正常的访问数据(即恶意的SQL命令代码),程序在接收后错误的将攻击者的输⼊作为代码语句的⼀部分执⾏,导致原始的查询逻辑被改变,额外的执⾏了攻击者静态构造的恶意代码,从⽽绕过验证机制和权限检查,达到取得隐藏数据或覆盖关键的参值,甚⾄执⾏数据库主机操作系统命令的⽬的。
例⼦:
拼接SQL
GET
url:
XXXX/list?_t=1595992542839&column=(case%0awhen(1=1)%0athen%0asleep(3)%0aelse%0a0%0aend)&order=desc&field=&pageNo=1&pageSize=10
应对⽅案:
穿越火线网剧1、严格限制web应⽤的数据库的操作权限,给⽤户提供仅能满⾜需求的最低权限,从⽽最⼤限度的减少注⼊攻击对数据库的危害。
2、严格限制变量的类型。
3、对进⼊数据的特殊字符(‘ “ \ <> & *)进⾏转义处理(或编码转换)
4、不要直接拼接SQL语句,所有的查询语句建议使⽤数据库提供的参数化查询接⼝,使⽤参数化的语句⽽不是将⽤户输⼊的变量嵌
⼊SQL语句中。
5、在应⽤发布之前建议使⽤专业的SQL注⼊检测⼯具进⾏检测,及时修补被检测出的SQL注⼊漏洞。
6、避免⽹站打印SQL错误信息,⽐如类型错误、字段不匹配等,可对异常信息做封装,给出友好提⽰,不直接打印堆栈信息到前
端。
2.不安全的会话管理漏洞:
token值信息直接在GET请求的URL上,造成token值的直接暴露,容易被⽇志记录、搜索引擎等缓存,影响客户会话安全。
应对⽅案: 禁⽌token以GET⽅式传递,可从header中获取。
3.任意⽂件上传:
任意⽂件上传(Unrestricted File Upload),是⼀种常见的web安全漏洞,由于web应⽤程序在实现⽂件上传功能是对上传的⽂件缺少必要的检查,使得攻击者可上传任意⽂件。利⽤该漏洞,攻击者可以直接上传webshell(webShell 就是以asp\php\jsp或者cgi等⽹页⽂件形式存在的⼀种命令执⾏环境,也可以将其称之为⼀种⽹页后门)、病毒、恶意脚本等各种危险⽂件,可能导致服务器权限被直接获取,从⽽危及整个系统的安全运⾏。
应对⽅案:
1、对⽤户上传的⽂件后缀采⽤⽩名单进⾏限制,且重命名⽂件名。
2、限定⽂件上传⽬录,且该⽬录不允许解析动态脚本⽂件。
4.任意⽂件读取:
任意⽂件读取漏洞(Unrestricted File Upload),是⼀种常见的web安全漏洞,因web程序提供的⽂件查看下载、附件下载等功能存在安全缺陷,导致通过修改该⽂件路径就能够查看和下载任意⽂件,这些⽂件包括:源代码⽂件、系统⽂件(/etc/passwd , C:/boot.ini等)、配置⽂件(config.php , /l , fig等),造成⽹站敏感信息泄露,严重危害⽹站安全。
应对⽅案:
1、服务端过滤特殊字符。(…./、 ….\、 ….\)
2、判断⽤户输⼊的参数的格式是否合法。
3、指定⽂件类型⽩名单(如:jpg\gif\png\rar\zip\pdf\doc\xls\ppt等),禁⽌⽤户读取、下载⽩名单以外的⽂件。
4、指定下载路径,禁⽌⽤户读取、下载指定⽬录以外的⽂件。
5.任意代码执⾏:
任意代码执⾏漏洞(Unrestrcted Code Execution),是⼀种常见的web安全漏洞,由于web程序没有针对执⾏函数做过滤,当web 程序应⽤在调⽤⼀些能将字符串转化成命令的函数(如PHP中的eval(),system(),exec())时,没有考虑做⼀些安全限制,导致可以通过构造特殊代码,执⾏操作系统命令,致使攻击者获取到⽹站服务器权限。
应对⽅案:
1、如果因使⽤的框架或中间件造成远程代码执⾏漏洞,需及时升级框架和中间件。
2、针对代码中可执⾏的特殊函数⼊⼝进⾏过滤,尝试对所有提交的可能执⾏命令的语句进⾏严格的检查或者对外部输⼊进⾏控制,系
统命令执⾏函数,不允许传递外部参数。
3、所有的过滤步骤要在服务器进⾏,不仅要验证数据的类型,还要验证期格式、长度、范围和内容。
6.越权访问:
越权访问(Broken Access Control , BAC),是⼀种常见的web安全漏洞,这类漏洞是指应⽤在检查授权(Authorization)时存在纰漏,使得攻击者可以利⽤⼀些⽅式绕过权限检查,访问或者操作到原本⽆权访问的界⾯。在实际的代码安全审查中,这类漏洞往往很难通过⼯具进⾏⾃动化检测,因此在实际应⽤中危害很⼤。
应对⽅案:
1、将⽤户⾝份标识存在session中并验证,不能把⽤户⾝份标识以参数形式置于HTTP请求中,应该放在session中,并且仅通过
session验证⽤户⾝份。
2、禁⽌从Cookie参数中去判断⽤户所属⽤户组,应该通过读取session会话来判断⽤户所属⽤户组。
3、⽂件下载时,禁⽌采⽤可被猜测的连续ID为参数进⾏⽂件下载,下载⽂件时也应判断当前⽤户是否有权限下载⽬标⽂件。
4、⾮普通⽤户操作页⾯严格做好权限管理,增删改查操作需要验证当前⽤户权限。
7.敏感信息泄露:
在最近⼏年,这是最常见的、最具影响⼒的攻击。这个领域最常见的漏洞是不对敏感信息进⾏加密。在数据加密过程中,常见的问题是不安全的密钥⽣成和管理以及使⽤弱加密算法、弱协议和弱密码。特别是使⽤弱的哈希算法来保护密码。
攻击者不是直接攻击密码,⽽是在传输过程中或从客户端(例如:浏览器)窃取密钥、发起中间⼈攻击,或从服务器端窃取明⽂数据。
应对⽅案:
1.应对敏感信息进⾏强加密再传输的操作,禁⽌⼀切敏感信息的明⽂传输,如:密码明⽂传输等。
2.对于配置⽂件的明⽂存储,可以使⽤ jasypt 进⾏密钥加密存储,增强安全性。
8.XSS跨站脚本攻击:
跨站脚本漏洞(Cross-site scripting , xss),是⼀种常见的web安全漏洞,由于web应⽤未对⽤户提交的数据做充分的检查过滤,允许⽤户在提交的数据中掺⼊HTML代码(最主要的是”>”,”<”),并将未经转义的恶意代码输出到第三⽅⽤户的浏览器解释执⾏,从⽽导致XSS漏洞。攻击成功后,攻击者可以得到更⾼的权限、私密⽹页内容、会话和cookie等内容。
XSS类型包括:
(1)⾮持久型跨站:即反射型跨站脚本漏洞,是⽬前最普遍的跨站类型。跨站代码⼀般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(⽐如数据库中)。
(2)持久型跨站:这是危害最直接的跨站类型,跨站代码存储于服务端(⽐如数据库中)。常见情况是某⽤户在论坛发贴,如果论坛没有过滤⽤户输⼊的Javascript代码数据,就会导致其他浏览此贴的⽤户的浏览器会执⾏发贴⼈所嵌⼊的Javascript代码。
(3)DOM跨站(DOM XSS):是⼀种发⽣在客户端DOM(Document Object
Model⽂档对象模型)中的跨站漏洞,很⼤原因是因为客户端脚本处理逻辑导致的安全问题。
应对⽅案:
内径1、与SQL注⼊防护的建议⼀样,假定所有输⼊都是可疑的,必须对所有输⼊中的script、iframe等字样进⾏严格的检查。这⾥的输
⼊不仅仅是⽤户可以直接交互的输⼊接⼝,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
2、不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
国考调剂3、针对请求参数以及⽤户可控数据进⾏防御,对输出进⾏编码处理。
4、在服务端对每⼀个输⼊进⾏合法性验证,只允许输⼊常见符号,字母以及数字。
5、对Cookie添加HttpOnly标识。
300字摘抄9.CSRF跨站请求伪造:
跨站请求伪造(Cross-site request forgery , CSRF),是⼀种常见的web安全漏洞,由于在web请求中重要操作的所有参数可被猜测到,攻击者可通过⼀些技术⼿段欺骗⽤户的浏览器去访问⼀个⽤户曾经认证过的⽹站,遂使攻击者可冒⽤⽤户的⾝份,进⾏恶意操作。
应对⽅案:
1、在表单中添加⼀个随机的数字或字母验证码,通过强制⽤户和应⽤进⾏交互,来有效地遏制CSRF攻击。
2、如果检查发现是⾮正常页⾯提交的请求(根据Referer进⾏判断),则极有可能是CSRF攻击。
3、在请求的参数⾥增加⼀个随机的token参数,且不可被猜测。
4、敏感的操作应该使⽤POST,⽽不是GET,以form表单的形式提交,可以避免token泄露。
10.⽤户名/⼝令暴⼒爆破:
⽤户名/⼝令爆破(Brute-force attack),是⼀种常见的web安全漏洞,由于⽤户登录模块缺少必要的防护机制,使⽤⽹站的注册或登录接⼝,攻击者通过系统地组合所有可能性(例如登录时⽤到的账户名、密码等),并以穷举法尝试所有可能性破解⽤户的账户名、密码等敏感信息。
应对⽅案:
1、增强验证码机制,为防⽌验证码被破解,可以适当怎加验证码⽣成的强度,例如中⽂图形验证码。
2、⽤户名或密码输⼊错误均提⽰“⽤户名或密码错误”,防⽌⿊客获取到注册⽤户的信息。
3、限制⽤户登录失败次数。
4、限制⼀定时间内IP登录失败次数。
5、限制⼀系列验证码的使⽤次数,⽤完即失效。
11.弱⼝令漏洞:
弱⼝令(weak password),没有严格和准确的定义,通常认为容易被别⼈(他们有可能对你很了解)猜测到或被破解⼯具破解的⼝令均为弱⼝令,如:⽣⽇、名字、简单的顺序数字or字符。
应对⽅案:
增强⼝令复杂度,验证码类可增加⽣成强度;密码类可增加密码的复杂度。
1、不使⽤空⼝令或系统缺省的⼝令,这些⼝令众所周之,为典型的弱⼝令。
2、⼝令长度不⼩于8个字符。
3、⼝令应该为以下四类字符的组合,⼤写字母(A-Z)、⼩写字母(a-z)、数字(0-9)和特殊字符。每类字符⾄少包含⼀个。如果某类字
符只包含⼀个,那么该字符不应为⾸字符或尾字符。
12.撞库攻击:
撞库攻击(Information Leakage Thinking Library Collision),是⼀种常见的针对web应⽤的攻击⽅式,为了⽅便记忆很多⽤户在不同⽹站使⽤的同⼀账号和密码,⿊客通过收集⽹络已泄露的拖库信息,特别是注册⽤户和密码信息,⽣成对应的字典表,尝试批量⾃动登陆其它⽹站验证后,得到⼀系列可以登录的真实账户。
应对⽅案:
1、增强验证码机制,为防⽌验证码被破解,可以适当增加验证码⽣成的强度,例如中⽂图形验证码。
2、⾃动识别异常IP,对于异常IP,整理⼀个⾮常严格的恶意IP库,甚⾄禁⽌这些IP访问⽹站。
3、⽤户账户被撞开后的保护,对⽤户⾏为进⾏分析,如判断⽤户的登录IP是否在常⽤地区,如果不是则直接锁定账号,让⽤户通过收
集、邮箱等⼿段来解锁。
13.注册模块设计缺陷:
注册模块设计缺陷(Registration module design flaws),是⼀种常见的web安全漏洞,⽹站注册模块的设计缺陷将导致⼀下⼏点安全漏洞:
1、任意⽤户密码回。
2、暴⼒枚举⽹站已注册⽤户。
3、暴⼒破解⽤户密码。
4、万能密码登录。
5、SQL注⼊。
以上安全问题会带来⽤户密码被盗、个⼈信息泄露、⽹站数据库泄露、⽹站被⼊侵等风险。醒酒方法
应对⽅案:
1、如果使⽤邮件验证的⽅式回密码,重置密码令牌需要设置为不可猜测,且加密令牌时使⽤通过加密的⽅式,⽽不是⾃⼰构造;设
置重置密码会话过期时间,在重置密码时不要从请求中获取需要重置的⽤户名。
2、如果使⽤短信验证的⽅式回密码,验证短信最少应为6位,且短信过期时间不能超过10分钟,在页⾯添加经过混淆过的
图形验证码,并在后端设置单位时间内的短信发送频率。
3、限制单位时间内认证错误次数。
什么的池塘开满了什么的荷花4、在⽤户注册页⾯、登录界⾯,添加可靠的机器⼈识别功能,例如图形验证码或短信验证码。
14.短信接⼝设计缺陷:
短信接⼝设计缺陷(SMS interface design flaws),是⼀种常见的web安全漏洞,短信接⼝通常⽤于注册验证、登录验证及其他敏感操作的验证上,但由于设计不当,通常会导致以下安全问题:
1、短时间内发送⼤量的⼿机短信。
2、短信验证码过短易被猜测。
3、短信验证码在发送多次时,多个验证码同时有效。
4、短信验证码在HTTP相应包中返回客户端。
应对⽅案:
1、在接⼝设置机器⼈识别机制,例如经过混淆的图形验证码,在验证通过后⽅可发送⼿机短信。
2、⽤来验证的验证码短信最少应为6位,过期时间内只能有⼀个验证码有效,且有效时间不应超过10分钟。
3、不要把短信验证码返回到客户端。
4、短信验证码在认证⼀次后应⽴即失效,输⼊错误需再次获取。
15.URL重定向漏洞:
URL重定向漏洞(URL redirection vulnerability),是⼀种常见的web安全漏洞,由于⽹站URL重定向
功能设计不当,没有验证跳转的⽬标URL是否合法,⽤户可通过此漏洞转到任意⽹站,这会导致可通过该⽹站跳转到存在⽊马、病毒的⽹站或者钓鱼⽹站。
应对⽅案:
1、不应从⽤户请求或填写的内容中获取跳转的⽬标URL,应在后端设定跳转URL。
2、对需要跳转的⽬标URL进⾏验证,如果跳转的URL不是所允许的,则禁⽌跳转。
3、进⾏URL时提⽰⽤户并显⽰跳转的⽬标URL地址并询问是否跳转。
16.拒绝服务漏洞:
拒绝服务攻击(denial-of-service attack , DOS),亦称“洪⽔攻击”,是⼀种⽹络攻击⼿段,其⽬的在于使⽬标电脑的⽹络或系统资源耗尽,使服务暂时中断或停⽌,导致其正常⽤户⽆法访问。
拒绝服务的攻击也可能导致与⽬标计算机同⼀⽹络中的其它计算机被攻击。互联⽹和局域⽹之间的带宽会被攻击并导致⼤量消耗,不但影响⽬标计算机,同时也影响局域⽹中的其他计算机。如果攻击的规模较⼤,整个地区的⽹络连接都可能会受到影响。
应对⽅案:
拒绝服务攻击的防御⽅式通常为⼊侵检测,流量过滤和多重验证,意在堵塞⽹络带宽的流量将被过滤,⽽正常的流量可正常通过。
1、⽹络设备:防⽕墙可以设置规则,例如允许或拒绝特定通讯协议、端⼝或IP地址。当攻击从少数不正常的IP地址发出时,可以简单
的使⽤拒绝规则阻⽌⼀切从攻击源IP发出的通信。
2、⿊洞引导/流量清洗:⿊洞引导指将所有受攻击计算机的通信全部发送⾄⼀个“⿊洞”(空接⼝或不存在的计算机地址)或者有⾜
够能⼒处理洪流的⽹络运营商,以避免⽹络受到较⼤影响。当流量被送到DDoS防护清洗中⼼时,通过采⽤抗DDoS软件处理,将正常流量和恶意流量区分开。这样⼀来可保障站点能够正常运作,处理真实⽤户访问⽹站带来的合法流量。
3、web服务器:升级web服务器,避免出现拒绝服务漏洞,如HTTP.sys(MS15-034)。
17.不⾜的⽇志记录和监控:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论