当前位置: 首页 > news >正文

Web应用安全威胁与防护措施

本文已收录至《全国计算机等级考试——信息 安全技术》专栏

由于极其容易出现漏洞、并引发安全事故,因此数据隐私的保护是目前绝大多数企业不可绕过的运维环节。不过,许多中小型企业往往会错误地认为只有大型企业才会成为黑客的目标。而实际统计数字却截然不同:有43%的网络犯罪恰恰是针对小型企业的。而且,无论是系统陈旧且未给漏洞打上安全补丁,还是各种恶意软件,甚至是一些人为的错误,都可以成为系统的受攻击面。

如果仔细观察当前的网络威胁态势,您可能会惊讶地发现,90%的Web应用都可能成为攻击者的潜在目标。因此,为了让应用程序和数据资产免受威胁,各大在线社区(例如OWASP和NIST)努力制定了各种安全标准和优秀实践,并以免费的文档、方法、工具等形式,协助企业通过对照实施,来增强其IT环境的安全态势。

在我们开始深入讨论之前,让我们首先来看一些惊人的统计数据:

仅在2020年上半年间,企业数据的泄露量已累计高达360亿条记录。

86%的网络安全泄漏是出于经济目的,而有10%是源于间谍活动。

从分类来看,有45%的泄漏源于黑客攻击,17%源于恶意软件,22%与网络钓鱼有关。

许多金融企业会让员工不受限地访问各类文档资源,他们甚至可以访问到本企业内部大约17%的敏感文件(约1100万个文件)。

平均而言,只有5%的公司文件夹受到了适当的保护。而且,有超过77%的企业并无事件响应计划。

可见,针对上述威胁,我们应采取主动的Web安全策略,以及严格的措施,来确保敏感的数据信息、Web应用、以及信息系统等资产,免受攻击与侵害。下面,我将和您讨论五种最主要的Web应用安全威胁,以及七种行之有效的防护措施与实践。

1.注入漏洞

注入漏洞会让攻击者方便将恶意代码植入到目标应用系统(如,解析器)中。简而言之,如果您的Web应用允许用户将其输入的信息插入后端数据库,或使用shell命令对操作系统进行调用,那么您的应用就可能会受到注入漏洞的影响。

当然,您可以通过检查应用的源代码,或对应用进行彻底的渗透测试,来发现此类漏洞。注入漏洞最常见的类型是SQL注入。攻击者会在SQL查询中,插入恶意代码,并将其转发到后端数据库服务器上,实施远程盗窃或攻击。

除常见的SQL注入之外,目前还有LDAP注入、XML注入、XPATH注入、OS命令注入、以及HTML注入。我们通常可以通过适当、及时地检查与清理用户的输入,来防范此类威胁。

2.身份验证失败

身份验证失败是由身份验证和会话管理控件的实施不当而引起的。如果攻击者能够成功地识别和利用那些与身份验证相关的漏洞,那么他们就能直接访问到各种敏感数据和功能。

为了利用身份验证漏洞,攻击者需要通过采用诸如:凭证填充、会话劫持、密码暴力破解、以及会话ID URL重写等方法,来模拟应用程序的合法用户。

我们可以通过实施健全的会话管理控制、多因素身份验证、限制和监视失败的登录尝试,来防范此类攻击。

3.敏感数据泄漏

当Web应用不能充分保护诸如:会话ID、密码、财务信息、以及客户数据等敏感信息时,数据泄露就会发生。

此类泄漏的内部原因主要包括:未对敏感数据实施加密,仅采用了弱加密方式,软件应用的本身漏洞,以及操作员将数据上传至错误的数据库等方面。而外部攻击因素则包括:SQL注入、身份验证与访问控制的破坏、网络钓鱼攻击、以及针对明文协议HTTP、FTP和SMTP传输数据等网络级别的攻击。

为了应对此类泄漏,我们可以采取的主要措施包括:彻底检查应用程序的源代码与IT环境,尤其是正在使用安全密码算法等方面。

4. XML外部实体

XML外部实体注入(通常被称为XML External Entity,XXE)可以让攻击者通过Web应用的漏洞,干扰应用对于XML数据的处理。此类攻击往往会导致诸如拒绝服务、数据泄露、服务器端请求伪造等问题。

我们可以通过实施服务器端的输入验证,修补和升级所有XML处理器,以及使用SAST工具来分析源代码等方法,来有效地防止XML外部实体注入。

5.受损的访问控制

从概念上说,访问控制机制就是要确定用户是否可以执行,与之身份和权限相符的操作。而当用户可以在其预期权限之外执行某项操作时,那么就出现了访问控制的破坏。

受损的访问控制通常会导致:未经授权的信息泄露、数据被直接修改或破坏、以及业务功能偏离预期用途等情况。我们可以通过在受信任的服务器端代码中、或无服务器的API中,强制使用完备的访问控制机制,来防止攻击者修改元数据(metadata),或绕过正常的访问控制检查。

鉴于Web应用在当下激烈竞争与快速发展的商业环境中尤为重要,我们可以通过如下七种针对Web应用的安全性防护措施与实践,来协助企业保护系统与数据。

1.定义并采用合适的网络安全框架

网络安全框架包括一系列文档和指南,它定义了企业在管理网络安全风险,以及减少漏洞的过程中,需要遵循的各种优秀实践。这里主要强调的是“合适才是最好的”。我们需要对企业所处的行业,当前开展的业务进行调研。在此基础上,通过利用专业知识和业界现有的安全标准,为本企业准备详细的计划与适合的安全策略。

2.跟踪您的资产并进行威胁评估

如今,大多数企业都会通过在线运维的方式,对诸如:Web应用、网站、Web服务、API、以及基于云的软件即服务(SaaS)等IT资产,进行管理。因此在此类IT环境中,他们需要与内、外部的各种系统持续进行通信。同时,许多功能性的接口都会被暴露出来。

对此,企业需要实施关键性网络安全计划便是资产发现。该环节可帮助运维人员找到各种Web资产,以便他们按需保护目标组件,并制定出相应的安全策略。可以说,一旦创建了所有重要Web资产的列表,他们即可开始执行威胁评估,以识别出针对当前应用的潜在威胁,进而制定出有效的缓解计划。

3.遵守安全编码标准

据软件工程研究所的统计,大约有90%的软件安全问题,都是由软件设计或代码中的缺陷引起的。诚然,开发人员的主要工作是让应用程序能够正常运行,但是如果忽略了安全编码,则会无形中留下各种安全漏洞和被攻击的后门。

可见,我们需要实施安全的编码标准,以确保软件和应用得到保护,并免受安全漏洞的影响。在实际项目中,我们可以在软件开发生命周期(SDLC)的早期阶段引入安全性,并通过遵循OWASP的安全编码规范、以及SEI CERT编码标准,这两种时下流行的安全编码标准,以避免在后期测试和部署阶段,花费时间和精力去填补各种安全漏洞。

4.部署企业级安全解决方案

最常见的企业级智能安全解决方案当属Web应用防火墙(WAF)。它可以通过监控和过滤各种恶意HTTP流量,协助保护Web应用免受诸如SQL注入、跨站点脚本等攻击的侵害。也就是说,我们通过在Web应用程序和互联网之间放置一道WAF屏障,可以仅允许合法用户的访问,并阻断各种恶意的请求。

当然,我们也可以考虑使用诸如Burpsuite pro和Acunetix之类专业的Web安全扫描器,以实现对Web应用的快速扫描,并识别出潜在的漏洞。

5.尽可能自动化

在日常运维中,我们往往需要执行Web应用扫描、签名与行为分析、以及DDoS缓解等重复性的任务。为了节省大量的时间和精力,安全人员应当与自动化技术人员合作,在确保各项任务得以自动化实施的前提下,增强Web应用的安全性。

6.加密数据

过去,Web应用往往使用明文的HTTP协议进行通信。这会导致攻击者能够以中间人(MIM)的方式,扮演通信中的某一方,窃取具体内容。如今,使用基于传输层安全协议(TLS)的HTTP加密方式,已经成为了许多企业应用的必选项。同时,它也成为了大多数浏览器的默认配置项。

HTTPS加密可以维护用户浏览器和服务器之间传输数据的完整性。也就是说,当用户使用HTTPS协议连接到诸如某个互联网银行应用的网站时,浏览器会基于证书建立起安全的TLS会话,以保证浏览器和服务器之间的请求和响应都处于加密状态。显然,此类加密技术对于维护敏感用户数据的机密性和完整性都是不错的实践。

7.渗透测试

最后一项有效的安全策略是,定期对Web应用执行全面的渗透测试,以及时发现目标系统的关键漏洞。渗透测试可以模拟攻击者或黑客对系统的出入口、源代码、数据库、公共可用源、以及后端网络,进行扫描和尝试性地攻击。

在完成测试后,渗透人员会出具已发现漏洞的优先级排序报告,并协助开发团队参照最佳的行业标准,予以漏洞修补和安全整改。

小结

至此,我们讨论了企业目前所面临的五种主要Web应用威胁,以及七种应对威胁的技术实践与防护措施。当然,对运维人员和普通员工进行最新的威胁概念教育,以及基本的威胁识别和预防等培训也是非常必要的。总之,对于攻击而言,越早发现,越早处置,越能保障安全。

 

相关文章:

Web应用安全威胁与防护措施

本文已收录至《全国计算机等级考试——信息 安全技术》专栏 由于极其容易出现漏洞、并引发安全事故,因此数据隐私的保护是目前绝大多数企业不可绕过的运维环节。不过,许多中小型企业往往会错误地认为只有大型企业才会成为黑客的目标。而实际统计数字却截…...

MySQL相关知识汇总

MySQL是一个广泛使用的开源关系型数据库管理系统,它以其高性能、稳定性和易用性而备受开发者喜爱。在软件开发领域,无论是大型项目还是小型应用,MySQL都扮演着重要的角色。本文将对MySQL的一些关键知识点进行汇总,帮助读者更好地了…...

【旧文搬运】为你的 Laravel 应用添加一个基于 Swoole 的 WebSocket 服务

做了一个基于 Swoole 的 WebSocket 扩展包,可以用来做实时状态推送,或者自定义消息处理实现 im,有需要的可以看看: [giorgio-socket] 使用方法 安装 安装扩展包 composer require wu/giorgio-socket发布配置文件 php artisan vendor:pu…...

vue项目从后端下载文件显示进度条或者loading

//API接口 export const exportDownload (params?: Object, peCallback?: Function) > {return new Promise((resolve, reject) > {axios({method: get,url: ,headers: {access_token: ${getToken()},},responseType: blob,params,onDownloadProgress: (pe) > {peC…...

[技巧]Arcgis之图斑四至点批量计算

前言 上一篇介绍了arcgis之图斑四至范围计算,这里介绍的图斑四至点的计算及获取,两者之间还是有差异的。 [技巧]Arcgis之图斑四至范围计算 这里说的四至点指的是图斑最东、最西、最南、最北的四个地理位置点坐标,如下图: 四至点…...

【java】20:枚举

枚举的二种实现方式 1) 自定义类实现枚举 2) 使用 enum 关键字实现枚举 自定义实现枚举: 1.不需要提供setXxx方法,因为枚举对象值通常为只读. 2.对枚举对象/属性使用final static共同修饰,实现底层优化. 3.枚举对象名通常使用全部大写&…...

★【二叉搜索树(中序遍历特性)】【 ★递归+双指针】Leetcode 98. 验证二叉搜索树

★【二叉搜索树(中序遍历特性)】【 ★递归双指针】Leetcode 98. 验证二叉搜索树 二叉搜索树 98. 验证二叉搜索树解法1 笨 中序递归遍历为一个数组 然后判断数组是不是升序排列就可以★解法2 不使用数组 递归法 ---------------🎈&#x1f38…...

打造无缝滚动体验:JavaScript中的scrollIntoView()方法实战指南

在现代Web开发中,提升用户体验是至关重要的。通过JavaScript的scrollIntoView()方法,我们可以为用户创造出流畅而令人愉悦的滚动体验。本文将深入研究scrollIntoView()的强大功能,并结合实例演示如何在项目中巧妙应用,以打造出无缝…...

实战:如何将Oracle单实例数据库转换成Oracle RAC数据库

导读 本文介绍如何将Oracle单实例数据库转换成Oracle RAC数据库 环境说明: 数据库节点2上有个单实例数据库zlxdb2,现在要将zlxdb2转换成RAC数据库,RAC数据库的两个实例分别是lzydb1和lzydb2。 以下是详细的操作步骤: 1、查看zlxdb…...

基于华为atlas的分类模型实战

分类模型选用基于imagenet训练的MobileNetV3模型,分类类别为1000类。 pytorch模型导出为onnx: 修改mobilenetv3.py中网络结构,模型选用MobileNetV3_Small模型,网络输出节点增加softmax层,将原始的return self.linear4…...

编程语言:SQL Server数据库使用教程,SQL Server增删改查语句

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全自学教程》 SQL Server是微软提供的一种关系型数据库&#xff0c…...

【tableau学习笔记】tableau无法连接数据源

【tableau学习笔记】tableau无法连接数据源 背景: 学校讲到Tableau,兴奋下载Kaggle Excel,一看后缀CSV,导入Tableau发现报错“tableau无法连接数据源”,自作聪明改为后缀XLSX,bug依旧。 省流&#xff1a…...

cetos7 Docker 安装 gitlab

一、gitlab 简单介绍和安装要求 官方文档:https://docs.gitlab.cn/jh/install/docker.html 1.1、gitlab 介绍 gitLab 是一个用于代码仓库管理系统的开源项目,使用git作为代码管理工具,并在此基础上搭建起来的Web服务平台,通过该平…...

无极低码:无极低码部署版操作指南

无极低码 :https://wheart.cn 无极低码是一个面向开发者的工具,旨在为开发者、创业者或研发企业,提供快速,高效,标准化,可定制,私有化部署的平台,在兼顾开发速度的同时,兼…...

C语言实现日本某地发生了一件谋杀案

题目 猜凶手 题目内容: 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话&…...

【C++】const成员

个人主页 : zxctscl 如有转载请先通知 文章目录 1. 前言2. const成员3. 取地址及const取地址操作符重载 1. 前言 在之前已经已经分享过了关于 【C】类和对象之常引用与运算符重载,这次分享的有关const的内容,话不多说,正文开始。…...

利用小蜜蜂AI智能问答ChatGPT+AI高清绘图生成图文故事案例

利用小蜜蜂AI智能问答ChatGPTAI高清绘图生成图文故事案例 这段时间利用小蜜蜂AI网站做了一些编程、绘图以及数据分析方面的案例。再过几个月,我的大孙子就要出生了。我要用小蜜蜂AI智能问答和AI高清绘图为大孙子生成一个1-9的数字图文故事。 小蜜蜂AI网站可以扫如…...

Github项目推荐-LightMirrors

项目地址 https://github.com/NoCLin/LightMirrors 项目简述 “LightMirrors是一个开源的缓存镜像站服务,用于加速软件包下载和镜像拉取。目前支持DockerHub、PyPI、PyTorch、NPM等镜像缓存服务。 当前项目仍处于早期阶段。”–来自项目说明。 也就是说&#xff…...

day14:栈排序

问题描述: 栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈…...

【LeetCode:2368. 受限条件下可到达节点的数目 + BFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

GitHub 趋势日报 (2025年06月08日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM&#xff09…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...