web 网络安全
Web网络安全是网络安全的一个重要分支,专注于保护Web应用程序、服务和网站免受各种网络威胁。学习Web网络安全涉及多个层面的知识和技能,以下是一些主要的学习领域:
一、XSS攻击
全称::Cross Site Script (跨站脚本)
危害::盗取用户信息、钓鱼、制造蠕虫等.
概念:黑客通过“HTML注入”篡改网页插入了恶意脚本当用户在浏览网页时,实现控制用户浏览器行为的一种攻击方式。
分类:存储型,反射型,DOM型。
存储型:黑客讲XSS脚本写在数据库中,用人请求查询的时候查询出XSS脚本并执行。
反射型: 访问携带XSS脚本的链接触发XSS.
DOM型: 访问携带XSS脚本的链接触发XSS
访问网站,出发XSS。我们可以查看源代码,安装火狐插件Friebug插件。
CSRF漏洞
全称:Cross-site request forgery (跨站请求伪造)
危害:执行恶意操作(“被转账”“被发垃圾评论”等)危制造蠕虫
概念:利用用户已登录的身份,在用户毫不知情的情况下
以用户的名义完成非法操作
点击劫持
点击劫持(Clickjacking)是一种网络攻击手法,攻击者通过欺骗用户点击看似无害的网页区域,实际上却触发了隐藏在其下的另一层网页上的按钮或链接,从而导致用户执行非预期的操作。这种攻击可以导致用户无意中泄露个人信息、授权访问权限或安装恶意软件。
原理
点击劫持的核心原理在于利用HTML的 < iframe > 标签。< iframe >允许网页内嵌其他网页,使得一个网页可以在另一个网页中显示。攻击者可以创建一个包含受害者网站的透明< iframe >,并将这个< iframe >放置在一个精心设计的页面上。页面的设计会让用户认为他们正在与顶层网页交互,而实际上他们的点击动作被定向到了< iframe >内部的网站上。
具体方法
点击劫持通常通过以下步骤实施:
1、创建透明覆盖层:攻击者使用透明或颜色匹配的元素覆盖在< iframe>之上,有时甚至可以使用图像来模仿顶层网站的外观,使得用户难以察觉底层的< iframe >。
2、定位和重叠:攻击者精确地定位< iframe>内的元素,使其与顶层网页上的按钮或链接对齐,这样用户在点击顶层按钮时,实际上是在点击< iframe>中的元素。
3、诱骗用户点击:攻击者可能使用各种社会工程技巧,如承诺奖励或提供有价值的内容,来诱使用户点击特定区域。
URL 跳转漏洞
URL跳转漏洞,也称为开放重定向(Open Redirect),是Web应用程序中常见的一种安全漏洞。这种漏洞发生在应用程序设计时未能正确验证或过滤用户提供的重定向URL,导致攻击者可以操纵重定向的目标,使用户被导向到恶意网站。
概念
URL跳转漏洞允许攻击者通过提供一个恶意URL,诱使应用程序将其作为重定向目标。由于用户是从一个看似可信的源开始的浏览过程,因此他们可能不会注意到URL的突然变化,或者即便注意到,也可能因为信任原始网站而继续浏览。这可以被用于实施各种攻击,如钓鱼、社会工程学攻击、身份盗窃等。
原理
应用程序通常会在某些操作完成后执行 URL重定向,比如登录后重定向到用户的主页,或者在表单提交后重定向到确认页面。在正常的逻辑中,应用程序会将用户重定向到预设或合法的URL。然而,当应用程序接受用户输入的URL作为重定向目标,并且没有对其进行有效的验证或过滤时,就会产生URL跳转漏洞。
实现方式
- Header头跳转
- Javascript跳转
- META标签跳转
防护措施
1、白名单验证:只允许重定向到预定义的一组可信URL。
2、URL规范化:确保重定向的URL经过规范化处理,避免通过特殊字符或编码绕过验证。
3、输入过滤:对用户提供的URL进行严格过滤,禁止任何潜在的恶意输入。
4、使用HTTP状态码:使用恰当的HTTP重定向状态码(如302 Found)并确保重定向链的安全性。
5、教育用户:提高用户对URL跳转和钓鱼攻击的认识,教会他们识别和避免可疑的重定向
SQL注入
SQL Injection是一种常见的Web安全漏洞,攻击者通过在Web应用程序的输入字段中插入恶意的SQL代码,从而欺骗数据库执行非授权操作。这种攻击可以导致数据泄露、数据篡改或删除、服务器控制权的丧失,甚至可以导致整个数据库的丢失。
SQL注入的工作原理
在正常的SQL查询中,应用程序会构造一个SQL语句,并将用户输入作为参数插入到这个语句中。例如:
SELECT * FROM users WHERE username = 'admin' AND password = 'password';
SQL注入的类型
SQL注入可以分为几类,基于攻击的方式和目标的不同:
错误注入:通过触发错误信息来推断数据库结构和内容。
布尔注入:利用真/假响应来确定SQL查询的结果。
基于时间的注入:通过数据库的延时响应来判断SQL语句的真假。
联合查询注入:使用UNION语句来返回额外的查询结果。
堆叠注入:通过分号(;)或其它SQL语句结束符来执行额外的SQL命令。
如何防止SQL注入
参数化查询:使用预编译的语句和参数化查询,可以避免SQL语句和数据的混淆。
输入验证:对所有用户输入进行严格的验证和清理,确保只有合法的数据才能进入查询。
最小权限原则:应用程序使用的数据库账户应具有尽可能少的权限,以限制潜在损害。
使用安全函数库:使用专门设计来防止SQL注入的函数库或框架。
安全配置:确保数据库和Web服务器的安全配置,如禁用错误回显等。
定期审计和测试:定期进行代码审查和渗透测试,查找潜在的SQL注入漏洞。
命令注入
命令注入(Command Injection),是一种安全漏洞,通常出现在Web应用程序或其他软件中,其中攻击者可以利用未充分过滤的用户输入来执行任意的系统命令。这种类型的攻击允许攻击者在目标系统上执行恶意代码,这可能导致数据泄露、服务中断、权限提升或完全控制系统。
原理
命令注入通常发生在应用程序需要调用外部命令行接口(CLI)或系统功能的时候。例如,一个Web应用可能需要使用shell命令来生成一个文件或执行某种操作。如果应用程序在构建这些命令时直接使用了未经验证或清理的用户输入,那么攻击者就可以在输入中插入额外的命令,从而控制命令的执行。
防范措施
为了防止命令注入攻击,开发者可以采取以下措施:
1、参数化输入:使用参数化查询或类似的技术,避免直接将用户输入拼接到命令中。
2、输入验证:对所有用户输入进行严格的验证和清理,确保只接受预期格式的输入。
3、使用安全函数:避免使用危险的函数,如system(), exec(), passthru()等,转而使用更安全的替代方案。
4、最小权限原则:应用程序应使用最低权限的账户执行系统命令,以减少潜在的损害。
5、环境隔离:在沙箱环境中执行危险操作,限制命令执行的范围。
6、日志记录和监控:记录所有命令执行的日志,并监控异常活动,以便及时发现和响应攻击。
7、安全编码培训:定期对开发团队进行安全编码实践的培训,提高其安全意识
操作文件
操作文件漏洞,通常指的是Web应用程序中因不当处理用户上传、读取、修改或删除文件的请求而导致的安全漏洞。这类漏洞可以允许攻击者上传恶意文件、读取敏感信息、修改关键配置或删除重要文件,从而对系统造成严重的安全威胁。
1、文件上传漏洞:
- MIME类型伪造:攻击者通过更改文件的MIME类型来绕过服务器的文件类型检查,上传恶意脚本或可执行文件。
- 文件路径遍历:通过构造特殊的文件名(如…/)来上传文件到服务器的任意目录。
- 后缀名绕过:服务器仅通过检查文件扩展名来判断文件类型,而忽视了文件的实际内容,攻击者可以通过双扩展名(如.jpg.php)来绕过限制。
2、文件读取漏洞:
- 任意文件读取:允许攻击者读取服务器上的任意文件,包括但不限于配置文件、源代码、日志文件等,从而泄露敏感信息。
3、文件写入漏洞:
- 任意文件写入:攻击者能够向服务器上的任意文件写入内容,可以用来植入webshell,进一步控制服务器。
4、文件删除漏洞:
- 任意文件删除:攻击者可以删除服务器上的任意文件,包括重要的系统文件或备份文件,导致数据丢失或系统崩溃。
相关文章:

web 网络安全
Web网络安全是网络安全的一个重要分支,专注于保护Web应用程序、服务和网站免受各种网络威胁。学习Web网络安全涉及多个层面的知识和技能,以下是一些主要的学习领域: 一、XSS攻击 全称::Cross Site Script (跨站脚本&a…...
Vue 3与Pinia:下一代状态管理的探索
引言 随着Vue 3的推出,Pinia应运而生,成为官方推荐的状态管理库,旨在替代Vuex。Pinia与Vuex相比,带来了以下主要区别和优势: 更简洁的API:Pinia的API设计更加直观和简洁,易于理解和使用。更好…...

《植物大战僵尸杂交版》2.2版本:全新内容与下载指南
《植物大战僵尸杂交版》2.2版本已经火热更新,带来了一系列令人兴奋的新玩法和调整,为这款经典的塔防游戏注入了新的活力。如果你是《植物大战僵尸》系列的忠实粉丝,那么这个版本绝对值得你一探究竟。 2.2版本更新亮点 新增看星星玩法 这个新…...
探索Hash Router:构建单页应用的基石
前言 第一次看到Vue的路由模式的时候,有点分不清楚 createWebHashHistory()和 createWebHistory的区别,感觉功能也差不多。后来去搜了一下发现前面的那个叫做哈希模式,哈希模式通过URL的hash(即#后面的部分)来实现前端…...
MySQL中undo log、redo log 和 binlog三种日志的作用及应用场景
在 MySQL 数据库中,undo log、redo log 和 binlog 都是关键的日志类型,它们在数据恢复和事务管理中起着重要作用。 Undo Log(回滚日志) 作用:undo log 主要用于事务回滚和MVCC(多版本并发控制)。…...

javaweb零碎知识3
// 假设您已经导入了 axios import axios from axios;// 获取表单元素 const form document.getElementById(myForm);// 为表单添加 submit 事件监听器 form.addEventListener(submit, function(e) {// 阻止表单的默认提交行为e.preventDefault();// 创建 FormData 对象并从表…...

2024.7.9.小组汇报postman分享会
文章目录 一、前言(一)界面导航说明(二)发送第一个请求 二、基本功能(一)常见类型的接口请求(常见的接口有如下四种类型:1.查询参数的接口请求2.表单类型的接口请求3.上传文件的表单请求4.JSON …...
C语言文件操作-文件IO(系统调用)
文件IO (系统调用) 文件描述符open函数read函数write函数lseek函数close函数dup函数dup2函数 stat函数getpwuid函数getgrgid函数 实例 目录操作 opendir函数readdir函数rewinddir函数closedir函数实例 文件IO (系统调用) 文件IO就是系统调用,用户空间进入内核空间…...

LeetCode67(二进制求和[位运算,大数运算])
二进制求和 题目要求: 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 这道题其实有几种解法.我们先来介绍简单的方法. 我们可以将两个字符串的二进制转成十进制,获取对应值相加之后,我们可以不断对2取余,获取尾数拼接即可.也就是像我们平常求一…...

grep对文件内容搜索(附重要拓展-正则表达式)
文件搜索是搜索查找符合条件的某文件的目录,若要编辑文件或对文件的某配置进行修改,就需要对文件内容进行搜索。 grep 命令是 Linux 及类 Unix 操作系统中的一个强大的文本搜索工具,用于搜索一个或多个文件中匹配给定模式的行。grep 代表“Gl…...

前端JS特效第26波:jQuery日期时间选择器插件
jQuery日期时间选择器插件,先来看看效果: 部分核心的代码如下: <!DOCTYPE html> <html> <head lang"zh-CN"> <meta charset"UTF-8"> <title>jQuery日期时间选择器插件 - PHP中文网</t…...

Anaconda+Pycharm 项目运行保姆级教程(附带视频)
最近很多小白在问如何用anacondapycharm运行一个深度学习项目,进行代码复现呢?于是写下这篇文章希望能浅浅起到一个指导作用。 附视频讲解地址:AnacondaPycharm项目运行实例_哔哩哔哩_bilibili 一、项目运行前的准备(软件安装&…...
java面试-java基础(上)
文章目录 一、什么是Java?特点?二、什么是JVM、JDK、JRE?三、java跨平台实现原理四、java数据类型有哪些?五、char能不能存一个中文汉字?六、存在数字i加1小于i或者i减1小于i?七、什么是自动类型转换与强制类型转换?八、什么是装/拆箱&am…...

STM32快速搭建项目框架
注:编写本博客的原因,学习期间基于复习之前知识点的需要,故撰写本教程,即是复习前面的知识点也是作为博客的补充 1.0 文件夹的创建 创建一个STM32项目为模版工程,问价夹下分别包含4个子文件夹,一个是Librar…...

JMH324-免费【最后一战LOL】MOBA竞技版本+单机一键端+视频教程+文本教程
资源介绍: 修改前打开【D:\ZHServer】文件夹里的【[1]一键启动.bat】,游戏不要打开,否则修改失败。 修改完以后重启架设程序才会生效。 fball_gamedb1数据库——gameuser数据表 obj_name 角色名 obj_lv 等级 obj_diamond 钻石 obj_gold 8…...

WPF UI 3D 多轴 机械臂 stl 模型UI交互
1、三维插件环境调整 2、动态模型材质处理 3、动态模型鼠标交互 4、模型旋转基本思路 5、六轴机械臂节点旋转处理 6、更多HelixToolkit插件处理案例 7、快速对接Blender模型 鼠标交互(没有强调场景的变换) 鼠标命中测试(HitTest 不推荐&…...

《金山 WPS AI 2.0:重塑办公未来的智能引擎》
AITOP100平台获悉,在 2024 世界人工智能大会这一科技盛宴上,金山办公以其前瞻性的视野和创新的技术,正式发布了 WPS AI 2.0,犹如一颗璀璨的星辰,照亮了智能办公的新征程,同时首次公开的金山政务办公模型 1.…...

RT2-使用NLP的方式去训练机器人控制器
目标 研究在网络数据上训练的视觉语言模型也可以直接结合到端到端的机器人控制中,提升泛化性以及获得突出的语义推理;使得单个的端到端训练模型可以同时学习从机器人观测到动作的映射,这个过程可以受益于基于网络上的语言和视觉语言数据的预训…...
VisActor vs ECharts: 哪个更适合你的数据可视化需求?
VisActor vs ECharts: 哪个更适合你的数据可视化需求? 在当今数据驱动的世界里,选择合适的数据可视化工具是至关重要的。ECharts作为广受欢迎的可视化库,已经在行业内拥有了长久的历史和广泛的用户基础。然而,VisActor作为新兴的…...

【QT中实现摄像头播放、以及视频录制】
学习分享 1、效果图2、camerathread.h3、camerathread.cpp4、mainwindow.h5、mainwindow.cpp6、main.cpp 1、效果图 2、camerathread.h #ifndef CAMERATHREAD_H #define CAMERATHREAD_H#include <QObject> #include <QThread> #include <QDebug> #include &…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...