简析Web应用6种主要漏洞及解决方案

栏目: 编程工具 · 发布时间: 5年前

内容简介:Web应用基于C/S(Client/Server)服务模型搭建:客户端发送请求,服务端负责响应。一般客户端就是浏览器,但可以向服务器发送请求的软件则远远不限于浏览器。Web服务器通常以公开的域名接收请求并提供服务,需要应对任何来源的请求。保障Web应用的安全需要前后端配合,但主要还是服务端。服务端需要全面分析项目所实现的功能,对任何可能暴露漏洞、引发攻击的接口,都要提前拟定防御措施,由前后端共同配合实施,落实到位。本文总结了Web应用最常见的6种漏洞,并对这些漏洞的危害、成因以及解决方案进行了简要分析。

Web应用基于C/S(Client/Server)服务模型搭建:客户端发送请求,服务端负责响应。一般客户端就是浏览器,但可以向服务器发送请求的软件则远远不限于浏览器。Web服务器通常以公开的域名接收请求并提供服务,需要应对任何来源的请求。

保障Web应用的安全需要前后端配合,但主要还是服务端。服务端需要全面分析项目所实现的功能,对任何可能暴露漏洞、引发攻击的接口,都要提前拟定防御措施,由前后端共同配合实施,落实到位。

本文总结了Web应用最常见的6种漏洞,并对这些漏洞的危害、成因以及解决方案进行了简要分析。

  • SQL注入
  • 权限绕过
  • XSS
  • CSRF
  • SSRF
  • 邮件/短信轰炸

1. XSS

漏洞危害:

  • 泄露用户隐私
  • 执行恶意代码
  • 绕过访问控制

XSS(Cross Site Scripting,跨站点脚本),是由于没有恰当过滤用户输入,导致攻击者把恶意脚本上传到服务器,进而注入到网页中。

要堵住这个漏洞,关键不在于输入过滤,而在于输出过滤。

解决方案:用户可以通过表单向服务器提交任意文本,但在服务器要渲染用户输入内容时,必须进行反XSS过滤。

2. SQL注入

漏洞危害:

  • 可导致数据库被拖
  • 重要信息泄露
  • 上传webshell
  • 执行系统命令,进而控制服务器

之所以会发生 SQL 注入,主要因为代码中存在拼接SQL语句的情况。比如:

SELECT field FROM tableName WHERE ( name = " + name + " )

这个查询使用参数 name 拼接了一条 SELECT 语句。

要堵住这个漏洞,关键是保证参数 name 的值必须合法有效。

解决方案:在实际拼接SQL语句之前,要对 name 进行合法性验证,通过验证后再去拼接。

3. 权限绕过

漏洞危害:

  • 攻击者执行未经授权的功能
  • 攻击者访问其他正常用户的信息
  • 攻击者越权使用高权限用户的功能

权限绕过,显然是因为没有对用户身份及权限进行验证或者验证不完善造成的。

要堵住这个漏洞,核心是确保用户有权发送相应请求。

解决方案:服务器给用户浏览器种上cookie,同时根据cookie生成唯一的token,与cookie值一同保存在服务器上(或数据库里)。对于敏感的操作(比如发表、修改文章),服务端要验证cookie是否与token一致。

4. CSRF

漏洞危害:

  • 攻击者能够欺骗受害用户完成应用允许的任一状态改变的操作

CSRF(Cross-Site Request Forgery,跨站点请求伪造),就是利用受站点信任的用户发送恶意请求。

要堵住这个漏洞,核心也是确保用户有权限发送相应请求。

解决方案:在重要请求中的每一个URL和所有的表单中添加token,并在服务器端验证该token。

5. SSRF

漏洞危害:

  • 攻击者可以利用这个漏洞,让服务器替他请求资源,特别是内网资源
  • 对内网web应用进行指纹识别
  • 利用file协议读取本地文件

SSRF(Server Side Request Forge,服务端请求伪造),利用Web服务器可以访问内网窃取内网信息或攻击内网服务器。

要堵住这个漏洞,关键在于验证用户输入的网址,特别是网址解析后的IP地址。

解决方案:解析用户提交的网址得到IP,对于短链接或 http://xip.io 等代理服务生成的IP必须跟踪解析,然后屏蔽内网IP段。

6. 邮件/短信轰炸

漏洞危害:

  • 骚扰未知用户
  • 消耗服务器资源

邮件/短信轰炸,主要由于邮件订阅或短信验证接口没有做好防护。

要堵住这个漏洞,可以限制发送频率和使用验证码验证。

解决方案:在发送邮件或短信的表单中操作增加输入验证码功能,包括服务器端验证码或短信验证码。另外,短信验证码要限制发送时间间隔,比如1分钟以后允许重发。

写在最后

Web应用,归根结底就是请求和响应。理论上,只要把住接收数据和发送数据这两道关,就可以杜绝安全漏洞。实践中,可以将前端发送请求的API统一管理,所有请求都走这个统一的接口发送请求。这样便于对请求进行验证和防护。服务端也类似,但相对复杂一些。一些针对cookie和token的操作可以统一完成。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精通Java并发编程(第2版)

精通Java并发编程(第2版)

[西] 哈维尔·费尔南德斯·冈萨雷斯 / 唐富年 / 人民邮电出版社 / 2018-10 / 89.00元

Java 提供了一套非常强大的并发API,可以轻松实现任何类型的并发应用程序。本书讲述Java 并发API 最重要的元素,包括执行器框架、Phaser 类、Fork/Join 框架、流API、并发数据结构、同步机制,并展示如何在实际开发中使用它们。此外,本书还介绍了设计并发应用程序的方法论、设计模式、实现良好并发应用程序的提示和技巧、测试并发应用程序的工具和方法,以及如何使用面向Java 虚拟机的......一起来看看 《精通Java并发编程(第2版)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具