网站安全漏洞全解析:保护你的网站免受攻击

76 阅读4分钟

网站安全漏洞全解析:保护你的网站免受攻击

一、网站漏洞概述

  1. 网站基本构成

    • 网关代理(如nginx)
    • 前端(JavaScript / Vue / React等)
    • 后端(Go / Java / Node等)
    • 数据库
    • 静态资源(如img/js/css)
  2. 常见安全事件

    • 数据泄漏:如X国公共卫生系统数据泄露事件。
    • 服务瘫痪:如某老辉航空公司官网系统崩溃事件。
    • 成果失窃:如某芯片制造巨头被勒索软件攻击事件。
    • 系统劫持:如某国导弹袭击警报误报事件。
  3. 课程目的

    • 蓝军:通过攻击验证企业内部安全现状,以攻促防。
    • 红军:在系统建设时提前规避漏洞。
  4. 漏洞分类

    • 服务端漏洞:SQL注入、RCE/命令注入、SSRF、文件上传等。
    • 客户端漏洞:XSS、CSRF、点击劫持等。

二、服务端漏洞

  1. 第三方组件漏洞

    • 组件使用不当可能导致服务器“中病毒”。
    • 解决方案:使用dependency-check maven检查组件安全漏洞。
  2. SQL注入

    • 原理:SQL语句静态模板与动态数据部分未严格区分。
    • 案例:订单查询、Mybatis-plus的inSql函数、Golang中Order排序。
    • 防护方式:使用预编译和ORM框架,对外部输入转义。
  3. 命令执行

    • 原理:命令拼接未做好安全过滤。
    • 案例:库存查询接口中storeId参数注入命令。
    • 防护方式:设置白名单验证、校验数据类型、过滤或转义特殊字符。
  4. 越权漏洞

    • 认证、授权与越权概念:认证确定“你是谁”,授权明确“你能做什么”,越权是资源访问或操作时主体权限未校验导致的问题。
    • 案例:水平越权(订单查询)、垂直越权(管理员访问普通用户无权限页面)。
    • 防护方式:避免使用短id,做好资源属主校验。
  5. SSRF(服务端请求伪造攻击)

    • 原理:向非预期网络地址发出恶意请求。
    • 案例:将URL改为http://localhost/admin访问内网页面。
    • 防护方式:对url的host进行白名单过滤,判定解析的ip是否为内网地址。
  6. 文件上传漏洞

    • 原理:上传恶意文件获取文件url。
    • 案例:上传包含恶意代码的文件(如example.php)。
    • 防护方式:对上传文件进行严格的类型和内容校验。
  7. 开放重定向

    • 原理:程序未控制好重定向范围。
    • 案例:redirect参数构造恶意链接。
    • 防护方式:对重定向进行白名单控制并正确校验。

三、客户端漏洞

  1. XSS(跨站脚本攻击)

    • 原理:插入恶意Script代码。
    • 案例:前端从请求path读取username并渲染到Dom中。
    • 防护方式:输入过滤、输出html encode、使用安全指令、限制tag和attribute、使用CSP。
  2. CSRF(跨站请求伪造)

    • 原理:诱导用户访问恶意链接执行非预期操作。
    • 案例:更改邮箱功能接口存在CSRF漏洞。
    • 防护方式:使用CSRF tokens、SameSite cookies、Referer-based validation。
  3. 点击劫持

    • 原理:隐藏恶意代码于无害内容下。
    • 案例:删除账号功能页面被钓鱼页面frame覆盖。
    • 防护方式:使用X-Frame-Options和CSP的frame-ancestors指令限制iframe来源。
  4. CORS跨域配置错误

    • 原理:错误配置CORS跨域访问Allow List。
    • 案例:个人信息页接口允许跨域访问但配置有误。
    • 防护方式:正确配置CORS跨域访问规则。
  5. WebSocket相关漏洞

    • WSS和WS:WSS提供加密信道,但仍可能存在SQL/XSS/RCE等漏洞。
    • CSWSH(跨站WebSocket劫持) :使用cookie认证时,若WebSocket服务端未校验请求来源,会话可能被劫持。
    • 防护手段:采用Cookie鉴权和ticket/token鉴权,限制请求Origin。

四、总结

  • 网站安全是一个持续的过程,需要不断关注和更新防护措施。
  • 了解各种安全漏洞的原理和防护方法是保障网站安全的关键。
  • 定期进行安全审计和漏洞扫描,及时发现并修复潜在问题。