zoukankan      html  css  js  c++  java
  • 简析 6 种 Web 安全漏洞及解决方案

     

    简析 6 种 Web 安全漏洞及解决方案

     
    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的操作可以统一完成。
     
  • 相关阅读:
    至少有K个重复字符的最长字串 分治法+递归
    旋转数组
    旋转链表 指针移动
    通过删除字母匹配到字典里最长的单词
    How to fix yum after CentOS 6 went EOL
    Centos6 yum源配置(CentOS 6停止更新)
    ORACLE 12C R2 RAC 安装配置指南
    Background Processes Specific to Oracle RAC
    如何缩小 Oracle 数据库中的临时表空间
    Script To Get Tablespace Utilization In Oracle Database 12c
  • 原文地址:https://www.cnblogs.com/jinyu-cnblogs/p/13606272.html
Copyright © 2011-2022 走看看