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

安全见闻(2)——开阔眼界,不做井底之蛙

内容预览 ≧∀≦ゞ

  • 安全见闻二:Web程序构成与潜在漏洞
    • 声明
    • 导语
    • 前端语言及潜在漏洞
      • 前端语言
      • 前端框架与代码库
        • 代码库的概念和用途
        • 流行的JavaScript框架
        • 常见的代码库
      • 前端潜在漏洞
    • 后端语言及潜在漏洞
      • 常见后端语言
      • 协议问题
      • 后端潜在漏洞
    • 数据库及潜在漏洞
      • 数据库分类
      • 数据库潜在漏洞
    • 服务器程序及潜在漏洞
      • 常见服务器程序
      • 服务器程序潜在漏洞
    • 结语

安全见闻二:Web程序构成与潜在漏洞


声明

学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负


导语

在现代网络安全的攻防体系中,Web程序的安全性是非常重要的一环。Web应用的前后端构成->数据库管理->服务器配置等各个层面,都可能存在潜在的漏洞。


前端语言及潜在漏洞

Web应用的前端通常使用三大基础语言:HTMLCSSJavaScript。这些语言的特性和使用方式直接影响Web应用的安全性。

前端语言

  • HTML

    • 潜在漏洞:点击劫持(Clickjacking)

      点击劫持是一种攻击方式,攻击者通过在网页中嵌套一个透明的框架(iframe),诱骗用户点击恶意链接或按钮。了解HTML结构对于防范此类攻击至关重要。

  • CSS

    • 潜在漏洞:注入攻击(Injection Attacks)

      注入攻击利用CSS的特性,将恶意代码注入到页面中,可能影响页面的显示效果或用户的交互体验。学习如何安全使用CSS属性是防范此类攻击的关键。

  • JavaScript

    • 常见漏洞:
      • XSS (跨站脚本攻击)

        XSS攻击允许攻击者向网站注入恶意脚本,可能导致用户数据泄露。根据注入方式不同,XSS可分为DOM型、反射型和存储型。

      • 点击劫持

        同上,利用透明框架欺骗用户点击隐藏的恶意链接。

      • 请求走私(HTTP Smuggling)

        攻击者通过篡改HTTP请求,绕过服务器的安全验证。这种攻击依赖于对HTTP协议的深入理解。

前端框架与代码库

代码库的概念和用途

代码库是将常用的代码片段、功能或组件封装起来,便于在不同项目中复用。
使用代码库可以节省开发时间,提高代码的可维护性和可重用性。

流行的JavaScript框架
  • Vue.jsReactAngular

    这些框架通过组件化和模块化提升了开发效率和代码组织性。
    虽然它们能够帮助开发者高效构建复杂应用,但其底层依赖于HTML、CSS和JavaScript。
    因此,框架中产生的安全问题往往与这些基础语言有关,常见的威胁包括跨站脚本攻击(XSS)。

常见的代码库
  • jQuery:一个快速、小巧且功能丰富的JavaScript库,简化了HTML文档遍历、事件处理、动画和Ajax交互。
  • Bootstrap:一个用于开发响应式和预制前端项目的流行框架,提供了预设计的组件和CSS预处理器。
  • Element UI:基于Vue.js的桌面端组件库,常用于快速搭建企业级的前端界面。

前端潜在漏洞

前端应用若未实施适当的安全措施,可能暴露于多种攻击之下:

  • XSS

    攻击者在网页中注入恶意脚本,当用户浏览该页面时,脚本被执行,可能导致用户信息泄露等。

  • CSRF (跨站请求伪造)

    攻击者诱骗用户浏览器在已登录的网站上发送恶意请求,可能执行未授权操作。

  • 点击劫持

    欺骗用户点击隐藏的恶意链接,可能导致用户执行危险操作。

  • 访问控制漏洞

    系统中的访问权限设置存在缺陷,导致攻击者访问、修改或删除受保护的资源。

  • Web缓存漏洞

    不当的缓存管理可能泄露敏感数据,例如用户信息和文件。

  • 跨域漏洞

    例如跨站脚本(XSS)攻击,跨源资源共享(CORS)绕过,JSONP 漏洞,跨站请求伪造(CSRF)

  • 请求走私

    利用了 HTTP 协议中请求和响应的解析和处理方式的不一致性,攻击者通过有造特定的恶意请求,以欺骗服务器和代理服务器,从而绕过安全机制,执行未经授权的操作。

后端语言及潜在漏洞

后端语言负责处理业务逻辑和数据库操作,不同语言具有独特的安全风险。

常见后端语言

  • PHP
    常见漏洞:反序列化漏洞、SQL注入、命令注入等。

  • Java、Python、Go、C/C++、Lua、Node.js、Ruby
    这些后端语言各有特性,但都可能面临与输入验证和用户权限管理相关的安全问题。

协议问题

后端开发涉及多种协议,尤其是请求走私攻击与协议处理方式密切相关。

理解HTTP协议机制对于学习此类攻击至关重要。

后端潜在漏洞

  • 信息泄露

    服务器返回的调试信息、日志等可能泄露关键信息,例如错误信息和内部结构。

  • XSS

    后端处理不当也可能引入XSS风险,确保数据在输出前经过适当过滤。

  • CSRF

    后端没有充分防范CSRF令牌时容易被利用,需加强令牌验证。

  • SSRF (服务器端请求伪造)

    攻击者利用服务器发送恶意请求,可能导致内部网络被攻击。

  • 反序列化漏洞

    特定语言的对象反序列化容易被攻击,尤其是PHP,Python,Java。

  • SQL注入漏洞

    通过操纵SQL查询,攻击者可执行未经授权的数据库操作,确保使用参数化查询以避免此类攻击。

  • 命令注入漏洞

    未对用户输入进行适当过滤或验证,可能导致执行系统命令,需严格验证输入。

  • 文件包含漏洞

    攻击者通过操纵应用程序的文件包含功能来加载和执行任意文件,这可能包括服务器上的敏感文件或远程恶意代码。

  • 服务端模板注入

    注入恶意代码片段至服务器模板中,影响渲染结果。

  • 跨域漏洞

    后端对CORS的错误配置,可能导致敏感数据被泄露。

  • 访问控制漏洞

    不当的访问权限管理,导致未授权用户访问敏感资源。

数据库及潜在漏洞

数据库是Web应用的重要组成部分,安全问题常发生在数据处理过程中,特别是输入验证和查询操作。

数据库分类

  1. 关系型数据库
    • MySQL
    • SQL Server
    • Access
    • PostgreSQL
  2. 非关系型数据库
    • MongoDB
    • CouchDB
    • Neo4j
    • Redis

数据库潜在漏洞

  • SQL 注入漏洞

    攻击者通过有造特殊的 SQL 语句,绕过身份验证,执行非授权操作。

  • 跨站脚本攻击(XSS)漏洞

    利用恶意脚本攻击 Web 服务器,行而影响数据库。

  • 数据库缓冲区溢出漏洞

    利用数据库缓冲区溢出,可能导致数据库不可用或数据泄露。

  • 数据库索引损坏漏洞

    损坏数据库索引,破坏数据库完整性和一致性。

  • 数据库日志注入漏洞

    注入恶意日志代码,导致数据库被攻击和监听。

服务器程序及潜在漏洞

服务器程序是Web应用的核心,负责处理用户请求、执行业务逻辑和管理数据流。如果服务器配置不当或存在漏洞,可能成为攻击者的目标。

常见服务器程序

  • Apache
  • Nginx
  • IIS
  • Tengine
  • Tomcat
  • WebLogic

服务器程序潜在漏洞

  • 信息泄露

    敏感配置文件或日志信息可能被泄露,定期审计服务器配置以提高安全性。

  • 文件上传漏洞

    未经验证的文件上传功能可能导致恶意代码被执行,确保上传文件类型和大小的限制。

  • 文件解析漏洞

    文件解析错误可能导致代码注入,使用安全库处理文件解析。

  • 目录遍历

    攻击者通过非法路径访问敏感文件,需限制用户对文件系统的访问。

  • 访问控制漏洞

    服务器未严格限制用户权限,导致未授权的访问,确保使用细粒度的访问控制。


结语

Web程序的安全问题错综复杂,涵盖前端、后端、数据库和服务器等多个层面。面对如此多样的挑战,唯有不断拓展视野,才能更好地掌握应对各种威胁的知识与技能。安全之路如同学海无涯,只有通过持续学习和实践,才能明确前进的方向,保持不断进步的动力。

相关文章:

安全见闻(2)——开阔眼界,不做井底之蛙

内容预览 ≧∀≦ゞ 安全见闻二:Web程序构成与潜在漏洞声明导语前端语言及潜在漏洞前端语言前端框架与代码库代码库的概念和用途流行的JavaScript框架常见的代码库 前端潜在漏洞 后端语言及潜在漏洞常见后端语言协议问题后端潜在漏洞 数据库及潜在漏洞数据库分类数据…...

ProtoBuf 的含义和安装

ProtoBuf 是什么 Protocol Buffers 是 Google 的⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法,它可⽤ 于(数据)通信协议、数据存储等。 Protocol Buffers 类⽐于、 XML,是⼀种灵活,⾼效,⾃动化机…...

C++位操作实战:掩码、提取与组装

在C编程中,位操作是一项基础且强大的技术,它允许程序员在二进制级别上直接操作数据。这种能力对于性能优化、内存节省以及底层硬件控制至关重要。本文将深入探讨C中的掩码操作、字节提取与组装,并通过实例展示这些技术的实际应用。 一、位运算…...

PVE虚拟机强制重启

在Proxmox VE (PVE) 中,强制重启虚拟机的方法有几种,取决于具体场景和虚拟机的状态。以下是常用的两种方法: 1. 使用PVE Web UI强制重启虚拟机 如果虚拟机无法正常关闭或重启,可以使用PVE Web界面中的强制关机/重启选项&#xf…...

Adobe Acrobat DC 打印PDF文件,没有打印出注释的解决方法

adobe acrobat在打印的时候,打印不出来注释内容(之前一直可以,突然就不行),升级版本、嵌入字体等等都试过,也在Google找了半天和问了GPT也么找着办法。 无奈之下,自己通过印前检查,…...

主机名学习

1.主机名 定义:主机名是一个人类可读的标识符,通常由字母、数字和连接符组成,用于标识网络中的设备。主机名可以是局部的(例如局域网中的设备名)或者全局的(通过 DNS 解析成 IP 地址)。 解析&…...

SpringBoot循环依赖

在Spring Boot(以及Spring框架)中,循环依赖是指两个或多个Bean互相依赖,导致Spring在创建这些Bean时无法正常进行依赖注入。例如,假设有两个类A和B,A依赖于B,而B又依赖于A。在这种情况下&#x…...

一道面试题:为什么要使用Docker?

先来笼统地看一下 1、环境一致性 众所周知,开发过程中一个常见的问题是环境一致性问题,由于开发环境,测试环境,生产环境不一致,导致有些bug并未在开发过程中被发现,而Docker的镜像提供了除内核外完整的运…...

类的创建、构造器、实例属性、实例方法

Creating Classes # Class: blueprint for creating new Objects # Object: instance of a class # Class: Human # Objects: John, Mary, Jack# 类名定义每个单词的首字母大写 class Point:# 每个方法至少有一个参数def draw(self):print("draw")# 创建Point对象 p…...

js读取.txt文件内容

方法一&#xff1a;FileReader() <input type"file" id"fileInput" /><script>const fileInput document.getElementById(fileInput)fileInput.addEventListener(change, function (e) {const file e.target.files[0]const reader new Fil…...

【AscendC算子开发】笔记2 算子高级开发和调试调优

算子调试 Tensor也可以通过特定的printf方法来打印&#xff0c;见上图。 gdb调试见上图。 为什么gdb调试无法成功&#xff0c;因为run.sh里面有两行export&#xff0c;如果直接通过.XX运行的话需要配置一下。 npu域也支持调试&#xff0c;可以使用上述的方法。 内存检测工…...

vscode连接keil-5 开发STM32 程序

Vs Code连接 keil-5 &#xff0c;开发STM32 程序 为了不使用难用的 keil-5 软件 继续使用友好的 vscode开发 步骤&#xff1a; 1 安装Keil Assitant 扩展 2 将你的 Keil-5 这个程序的路径找到复制到这里 3 下载 Mingw 下载点此处 4 下载后只解压 就行了 不安装 下载完 放在…...

数据结构深度优先搜索遍历连通图+非连通图(C语言代码+遍历+终端输入内容)

首先数据结构(C语言版第二版)的关于深度优先搜索遍历连通图的图G4如下: 使用邻接表去创建上面这个无向图&#xff0c;然后再使用书本DFS函数以及DFSTraverse函数实现深度优先搜索遍历 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #…...

信息安全工程师(55)网络安全漏洞概述

一、定义 网络安全漏洞&#xff0c;又称为脆弱性&#xff0c;是网络安全信息系统中与安全策略相冲突的缺陷&#xff0c;这种缺陷也称为安全隐患。漏洞可能导致机密性受损、完整性破坏、可用性降低、抗抵赖性缺失、可控性下降、真实性不保等问题。 二、分类 网络安全漏洞可以根据…...

member access within null pointer of type ‘ListNode‘

文章目录 前言一、空指针解引用二、访问已释放的内存三、 结构体定义问题四、错误的链表操作五、代码上下文六、示例代码七、调试建议 前言 p -> next p1; p1 p1 -> next; p p->next;runtime error: member access within null pointer of type ListNode如果出现…...

UE5蓝图中整理节点的方法

UE5蓝图中整理节点的方法 第一种&#xff1a;子图 右键选中的节点&#xff0c;出现一个面板&#xff0c;点击 Collapse Nodes 既可折叠选中的所有节点 注意&#xff1a;子图不可以被复制使用。 双击子图可以查看节点&#xff0c;若不想折叠选中的节点为子图&#xff0c;右键点…...

01,http 协议

1 &#xff0c;http 协议 &#xff1a;介绍 1 &#xff0c;http &#xff1a;是什么 Hyper Text Transfer Protocol &#xff1a;超文本传输协议 2 &#xff0c;传输内容 &#xff1a;文本 1 &#xff0c;内容 &#xff1a;      纯文本    2 &#xff0c;特殊 &#xf…...

在 typescript 中,如何封装一个 class 类来接收接口的响应数据

在 TypeScript 中&#xff0c;封装一个类来接收接口的响应数据是一个常见的需求&#xff0c;特别是在处理后端 API 响应时。这通常涉及到定义与后端 API 响应结构相匹配的接口&#xff08;或类型&#xff09;&#xff0c;并在类中创建方法来处理这些数据。以下是一个简单的示例…...

力扣周赛第420场 中等 3325.字符至少出现k次的子字符串 I

文章目录 题目介绍题解 题目介绍 题解 滑动窗口思想&#xff1a;参考 3.无重复字符的最长子串 链接 代码如下&#xff1a; class Solution {public int numberOfSubstrings(String s, int k) {int n s.length(), res 0;for(int left 0; left < n; left){// 记录窗口内…...

【Spring框架】Spring核心思想IoC以及依赖注入DI详解

目录 Spring框架前言 服务端三层开发表现层业务层持久层 Spring框架的概述Spring框架的优点Spring核心——IoC什么是IoC&#xff1f;O.o什么是耦合度&#xff1f; 创建第一个IoC程序导入必要依赖编写接口和实现类编写Spring核心配置文件测试类进行测试 Spring配置文件Bean对象的…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...