URL中的特殊字符与web安全
在现代Web应用中,URL作为客户端与服务器之间的通信桥梁,承载着大量的重要信息。URL中的特殊字符,看似只是一些常见的符号,但在Web安全领域,它们与其他安全知识密切相关,如在Base64编码、SQL注入,路径遍历等场景中,一些字符需要正确处理,以避免混淆或引起解析问题。
本篇文章将详细探讨URL中的特殊字符及其与Web安全的密切关系。通过分析URL中特殊字符的作用、编码规则和它们在SQL注入、路径遍历等攻击中的作用,帮助开发人员和安全人员更加全面地了解这些字符在Web安全中的应用。
1. URL中特殊字符的作用
URL(统一资源定位符)用于标识网络资源,其基本结构如下:
协议://用户名:密码@主机:端口/路径?查询参数#片段
URL的各个组成部分中可能包含特殊字符,这些字符直接影响服务器的解析方式。以下是一些常见的特殊字符及其作用:
-
?(查询分隔符):用于分隔URL路径和查询参数。例如:https://example.com/search?q=test服务器会解析
q=test并处理查询请求。 -
&(参数分隔符):用于连接多个查询参数。例如:https://example.com/search?q=test&lang=en服务器会解析
q=test和lang=en两个参数。 -
#(片段标识符):用于指示页面中的锚点。例如:https://example.com/page#section1#section1部分不会发送到服务器,而是由浏览器处理。 -
=(键值对分隔符):用于分隔查询参数的键和值。例如:https://example.com/login?user=admin&pass=1234服务器解析
user=admin和pass=1234。 -
%(URL编码):用于编码特殊字符,例如:%20 代表空格,%2F 代表 / -
+:在URL编码中代表空格,但在Base64中用于数据编码,可能导致解析问题。
2. URL编码规则
URL编码(也叫百分号编码)是将一些特殊字符转换为由百分号(%)后跟两位十六进制数的形式,以确保URL中传输的数据能够被正确解析。以下是URL编码的基本规则:
- 非ASCII字符(如中文)需要转换为UTF-8编码后再进行URL编码。例如:
"渗透" -> UTF-8 -> %E6%B8%97%E9%80%8F - 特殊字符转换:
空格 -> %20 斜杠 / -> %2F 问号 ? -> %3F
3. URL编码与Base64的联系
Base64是一种常见的编码方式,常用于数据传输与存储。然而,Base64中的某些特殊字符(如+、/、=)可能会影响URL的解析,因此出现了URL Safe Base64编码:
+→%2B(避免误解为空格)/→-(避免路径解析错误)=可省略(填充符,在某些URL参数中可去除)
示例:
普通Base64: QWxhZGRpbjogcGFzc3dvcmQ=
URL安全Base64: QWxhZGRpbjogcGFzc3dvcmQ
即使省略
=,Base64仍可正常解码,这是因为Base64解码器能够自动识别并补充省略的填充符。在Base64编码中,=符号用作填充字符,以确保编码后的字符串长度是4的倍数。若编码后的数据长度不足4的倍数,解码器会自动添加填充符号=,并正确恢复原始数据。因此,在某些情况下,即使省略了填充符号,解码器仍能正常解码,并还原出正确的结果。
4. URL编码与SQL注入的联系
在SQL注入攻击中,攻击者常常利用URL中的特殊字符来修改SQL查询结构。这些字符在不同的上下文中可能有不同的意义,因此,理解它们的多重作用至关重要。
如在SQL查询中,# 是注释符,攻击者可以利用它来截断查询语句,从而绕过验证。但在URL中,# 的作用不同,它是片段标识符,用于指示浏览器的锚点位置,不会发送到服务器。由于其在URL和SQL中的作用完全不同,为避免混淆,通常需要对#进行URL编码(%23)以确保正确处理。
例如:
https://example.com/search?q=admin%23password
或者用 --+ 作为注释,因为 - 在URL中没有特殊含义,而 + 在URL编码中代表空格。
5. URL编码与路径遍历的联系
路径遍历攻击(Path Traversal)利用../字符访问本不应访问的文件。在某些情况下,为了绕过防御机制,攻击者会使用URL编码来规避路径检查:
- URL编码:
%2e%2e%2f(../的编码形式) - 双写斜杠:
//(有些解析器会错误处理多个斜杠) - 混合编码:
..%2f或%2e%2e/(某些解析器会错误解码) - 反斜杠:
..\(适用于Windows系统) - 附加字符绕过:有些防御机制只检测标准
../,但如果加入额外的字符,如....//或%252e%252e%252f(双重URL编码),可能绕过过滤。
例如:
https://example.com/%2e%2e/%2e%2e/%2e%2e/etc/passwd
https://example.com/..%2f..%2f..%2fetc/passwd
https://example.com//.././.././../etc/passwd
结论
在Web应用中,特殊字符的作用因上下文而异。如在SQL注入攻击中,#、-- 和空格(%20、+)等可被用来绕过安全机制;而在URL编码中,这些字符需要正确处理,以避免混淆或引起解析问题。了解这些字符在不同场景下的功能,可以帮助开发人员更好地防范安全漏洞,并确保Web应用的健壮性。
相关文章:
URL中的特殊字符与web安全
在现代Web应用中,URL作为客户端与服务器之间的通信桥梁,承载着大量的重要信息。URL中的特殊字符,看似只是一些常见的符号,但在Web安全领域,它们与其他安全知识密切相关,如在Base64编码、SQL注入,…...
Golang学习笔记_41——观察者模式
Golang学习笔记_38——享元模式 Golang学习笔记_39——策略模式 Golang学习笔记_40——模版方法模式 文章目录 一、核心概念1. 定义2. 解决的问题3. 核心角色4. 类图 二、特点分析三、适用场景1. 股票价格监控系统2. 物联网设备状态监控3. 电商订单状态通知 四、Go语言实现示例…...
中原银行:从“小机+传统数据库”升级为“OceanBase+通用服务器”,30 +系统成功上线|OceanBase DB大咖说(十五)
OceanBase《DB 大咖说》第 15 期,我们邀请到了中原银行金融科技部数据团队负责人,吕春雷。本文为本期大咖说的精选。 吕春雷是一位资历深厚的数据库专家,从传统制造企业、IT企业、甲骨文公司到中原银行,他在数据库技术与运维管理…...
slam学习笔记9---ubuntu2004部署interactive_slam踩坑记录
背景:interactive_slam是一款可用于离线优化点云地图算法。部署安装容易出问题,这里记录一下。 一、安装基本流程 绝大部分跟着readme走,g2o安装使用apt安装 interactive_slam depends on the following libraries:GL3W GLFW Dear ImGui p…...
MVC模式全解析
MVC 模式:概念与架构基石 在软件开发的广袤宇宙中,MVC 模式宛如一颗璀璨的恒星,照亮了无数开发者前行的道路。它是一种经典的软件架构模式,全称为 Model - View - Controller,即模型 - 视图 - 控制器 ,将应…...
游戏引擎学习第140天
回顾并为今天的内容做准备 目前代码的进展到了声音混音的部分。昨天我详细解释了声音的处理方式,声音在技术上是一个非常特别的存在,但在游戏中进行声音混音的需求其实相对简单明了,所以今天的任务应该不会太具挑战性。 今天我们会编写一个…...
LeetCode热题100JS(44/100)第八天|二叉树的直径|二叉树的层序遍历|将有序数组转换为二叉搜索树|验证二叉树搜索树|二叉搜索树中第K小的元素
543. 二叉树的直径 题目链接:543. 二叉树的直径 难度:简单 刷题状态:1刷 新知识: 解题过程 思考 示例 1: 输入:root [1,2,3,4,5] 输出:3 解释:3 ,取路径 [4,2,1,3] 或…...
【虚拟化】Hyper-V 与 WSL 2
关于 Hyper-V 与 WSL 2 的简介 Hyper-V 是微软出的 Type-I 型 Hypervisor,根据微软官方说 WSL 2 用了 Hyper-V 架构的子集,称为虚拟机平台(Virtual Machine Platform),是 Windows 中的一个可选组件,所以你…...
力扣刷题DAY6(滑动窗口/中等+栈/简单、中等)
一、滑动窗口 找到字符串中所有字母异位词 方法一:哈希表 class Solution { public:vector<int> findAnagrams(string s, string p) {vector<int> ans;unordered_map<char, int> target;for (int i 0; i < p.size(); i) {target[p[i]];}in…...
MySQL中的共享锁和排他锁
MySQL 中的锁可以从多个维度进行分类,其中从模式上可以分为共享锁(Shared Lock,S Lock)和 排他锁(Exclusive Lock,X Lock)。 共享锁(Shared Lock,S Lock) 共…...
HarmonyOS ArkTS声明式UI开发实战教程
引言:为何选择ArkTS? 在HarmonyOS生态快速发展的当下,ArkTS作为新一代声明式UI开发框架,正在引发移动应用开发范式的变革。笔者曾在多个跨平台框架开发中经历过"命令式编程之痛",直到接触ArkTS后才发现&…...
【AI】【Unity】关于Unity接入DeepseekAPI遇到的坑
前言 由于deepseek网页端在白天日常抽风,无法正常的使用,所以调用API就成了目前最好的选择,尤其是Deepseek的API价格低得可怕,这不是和白送的一样吗!然后使用过很多本地部署接入API的方式,例如Chatbox、Pa…...
虚拟机 | Ubuntu图形化系统: open-vm-tools安装失败以及实现文件拖放
系列文章目录 虚拟机 | Ubuntu 安装流程以及界面太小问题解决 文章目录 系列文章目录虚拟机 | Ubuntu 安装流程以及界面太小问题解决 前言一、VMware Tools 和 open-vm-tools 是什么1、VMware Tools2、open-vm-tools 二、推荐使用open-vm-tools(简单)1、…...
zabbix 监控的内存溢出问题 out of memory
zabbix 由于是docker 建置 zabbix-server-server 在web端出现异常情况 经过检查发现docker status 显示Restarting (0) 4 seconds ago 频繁在重起 经过docker logs 分析查看到 __zbx_shmem_malloc(): out of memory (requested 256 bytes) 问题 191:20250306:023902.993 m…...
【DeepSeek】Ubuntu快速部署DeepSeek(Ollama方式)
文章目录 人人都该学习的DeepSeekDeepSeek不同版本功能差异DeepSeek与硬件直接的关系DeepSeek系统兼容性部署方式选择部署步骤(Ollama方式)1.选定适合的deepseek版本2.环境准备3.安装Ollama4.部署deepseek5.测试使用 人人都该学习的DeepSeek DeepSeek 作…...
升级到Android Studio 2024.2.2 版本遇到的坑
一、上来就编译报错,大概率是因为选择了替换安装,本地配置文件出错 找到本地当前版本的配置文件,删掉,重启studio就好了: 1、打开终端 2、“cd /Users/用户名/Library/Application\ Support/Google” //到Google目录 …...
2025最新Transformer模型及深度学习前沿技术应用
第一章、注意力(Attention)机制 1、注意力机制的背景和动机(为什么需要注意力机制?注意力机制的起源和发展里程碑)。 2、注意力机制的基本原理(什么是注意力机制?注意力机制的数学表达与基本公…...
深入解析 Umi-OCR:高效的免费开源 OCR 文字识别工具
1. Umi-OCR 简介 1.1 什么是 Umi-OCR? Umi-OCR 是一款开源、免费、支持离线使用的光学字符识别(OCR)工具,基于 PaddleOCR 和 Tesseract-OCR,能够高效识别图片中的文字,尤其适用于批量截图文字提取、PDF 文…...
WebAssembly技术及应用了解
WebAssembly(Wasm)是一种为Web设计的高效、低级的二进制指令格式,旨在提升Web应用的性能并支持多种编程语言。以下是对其核心概念、优势、应用场景及开发流程的系统介绍: 1. 核心概念 二进制格式:Wasm采用紧凑的二进制…...
【ESP-ADF】在 VSCode 安装 ESP-ADF 注意事项
1.检查网络 如果您在中国大陆安装,请使用魔法上网,避免无法 clone ESP-ADF 仓库。 2.VSCode 安装 ESP-ADF 在 VSCode 左侧活动栏选择 ESP-IDF:explorer,展开 advanced 并点击 Install ESP-ADF 然后会出现选择 ESP-ADF 安装目录。 如果出现…...
我的两个医学数据分析技术思路
我的两个医学数据分析技术思路 从临床上获得的或者公共数据库数据这种属于观察性研究,是对临床诊疗过程中自然产生的数据进行分析而获得疾病发生发展的规律等研究成果。再细分,可以分为独立危险因素鉴定和预测模型构建两种。 独立危险因素鉴定是一直以…...
MySQL 架构、索引优化、DDL解析、死锁排查
私人博客传送门 MySQL 认识索引 | 魔筝炼药师 MySQL 索引优化 | 魔筝炼药师 OnlineDDL(在 MySQL 5.7 数据库里,InnoDB引擎,执行一条DDL会发生什么事情) | 魔筝炼药师 MySQL 死锁排查 | 魔筝炼药师...
Ubuntu搭建最简单WEB服务器
安装apache2 sudo apt install apache2 检查状态 $ sudo systemctl status apache2 ● apache2.service - The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>Active: active (running) since Thu 2025-03-06 09:51:10…...
VSCode 配置优化指南:打造极致高效的前端开发环境
VSCode 配置优化指南:打造极致高效的前端开发环境 一、基础环境配置:让开发更流畅 1. 性能优化设置 // settings.json {"files.autoSave": "afterDelay", // 自动保存(延迟1秒)"files.exclud…...
FPGA-DE2115开发板实现4位全加器、3-8译码器。
文章目录 一、安装quartus二、4位全加器三、3-8译码器(8段数码管)四、参考文章 一、安装quartus 安装quartus参考文章:Quartus Prime 18.0与ModelSim的安装 Quartus II 18.0安装教程(非常详细)从零基础入门到精通&…...
宇树科技嵌入式面试题及参考答案(春晚机器人的公司)
目录 设计一个带看门狗(Watchdog)的嵌入式系统,描述故障恢复流程 在资源受限的 MCU 上实现 OTA 升级功能,描述关键设计点 如何实现 OTA(空中升级)功能?描述固件校验和回滚机制的设计要点 推挽输出与开漏输出的区别?举例说明其在 GPIO 控制中的应用 UART、SPI、I2C …...
Spring提供的SPEL表达式
SPEL 1. 概述 SpEL是Spring框架中用于表达式语言的一种方式。它类似于其他编程语言中的表达式语言,用于在运行时计算值或执行特定任务。 SpEL提供了一种简单且强大的方式来访问和操作对象的属性、调用对象的方法,以及实现运算、条件判断等操作。它可以…...
Pytorch xpu环境配置 Pytorch使用Intel集成显卡
1、硬件集显要为Intel ARC并安装正确驱动 2、安装Intel oneAPI Base Toolkit (https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/base-toolkit-download.html)安装后大约20G左右,注意安装路径 3、安装Visual Studio Build To…...
uploadlabs通关思路
目录 靶场准备 复现 pass-01 代码审计 执行逻辑 文件上传 方法一:直接修改或删除js脚本 方法二:修改文件后缀 pass-02 代码审计 文件上传 1. 思路 2. 实操 pass-03 代码审计 过程: 文件上传 pass-04 代码审计 文件上传 p…...
优选算法的智慧之光:滑动窗口专题(二)
专栏:算法的魔法世界 个人主页:手握风云 目录 一、例题讲解 1.1. 最大连续1的个数 III 1.2. 找到字符串中所有字母异位词 1.3. 串联所有单词的子串 1.4. 最小覆盖子串 一、例题讲解 1.1. 最大连续1的个数 III 题目要求是二进制数组&am…...
