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

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网络安全是网络安全的一个重要分支&#xff0c;专注于保护Web应用程序、服务和网站免受各种网络威胁。学习Web网络安全涉及多个层面的知识和技能&#xff0c;以下是一些主要的学习领域&#xff1a; 一、XSS攻击 全称:&#xff1a;Cross Site Script &#xff08;跨站脚本&a…...

Vue 3与Pinia:下一代状态管理的探索

引言 随着Vue 3的推出&#xff0c;Pinia应运而生&#xff0c;成为官方推荐的状态管理库&#xff0c;旨在替代Vuex。Pinia与Vuex相比&#xff0c;带来了以下主要区别和优势&#xff1a; 更简洁的API&#xff1a;Pinia的API设计更加直观和简洁&#xff0c;易于理解和使用。更好…...

《植物大战僵尸杂交版》2.2版本:全新内容与下载指南

《植物大战僵尸杂交版》2.2版本已经火热更新&#xff0c;带来了一系列令人兴奋的新玩法和调整&#xff0c;为这款经典的塔防游戏注入了新的活力。如果你是《植物大战僵尸》系列的忠实粉丝&#xff0c;那么这个版本绝对值得你一探究竟。 2.2版本更新亮点 新增看星星玩法 这个新…...

探索Hash Router:构建单页应用的基石

前言 第一次看到Vue的路由模式的时候&#xff0c;有点分不清楚 createWebHashHistory()和 createWebHistory的区别&#xff0c;感觉功能也差不多。后来去搜了一下发现前面的那个叫做哈希模式&#xff0c;哈希模式通过URL的hash&#xff08;即#后面的部分&#xff09;来实现前端…...

MySQL中undo log、redo log 和 binlog三种日志的作用及应用场景

在 MySQL 数据库中&#xff0c;undo log、redo log 和 binlog 都是关键的日志类型&#xff0c;它们在数据恢复和事务管理中起着重要作用。 Undo Log&#xff08;回滚日志&#xff09; 作用&#xff1a;undo log 主要用于事务回滚和MVCC&#xff08;多版本并发控制&#xff09;。…...

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分享会

文章目录 一、前言&#xff08;一&#xff09;界面导航说明&#xff08;二&#xff09;发送第一个请求 二、基本功能&#xff08;一&#xff09;常见类型的接口请求(常见的接口有如下四种类型&#xff1a;1.查询参数的接口请求2.表单类型的接口请求3.上传文件的表单请求4.JSON …...

C语言文件操作-文件IO(系统调用)

文件IO (系统调用) 文件描述符open函数read函数write函数lseek函数close函数dup函数dup2函数 stat函数getpwuid函数getgrgid函数 实例 目录操作 opendir函数readdir函数rewinddir函数closedir函数实例 文件IO (系统调用) 文件IO就是系统调用&#xff0c;用户空间进入内核空间…...

LeetCode67(二进制求和[位运算,大数运算])

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

grep对文件内容搜索(附重要拓展-正则表达式)

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

前端JS特效第26波:jQuery日期时间选择器插件

jQuery日期时间选择器插件&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html> <html> <head lang"zh-CN"> <meta charset"UTF-8"> <title>jQuery日期时间选择器插件 - PHP中文网</t…...

Anaconda+Pycharm 项目运行保姆级教程(附带视频)

最近很多小白在问如何用anacondapycharm运行一个深度学习项目&#xff0c;进行代码复现呢&#xff1f;于是写下这篇文章希望能浅浅起到一个指导作用。 附视频讲解地址&#xff1a;AnacondaPycharm项目运行实例_哔哩哔哩_bilibili 一、项目运行前的准备&#xff08;软件安装&…...

java面试-java基础(上)

文章目录 一、什么是Java&#xff1f;特点&#xff1f;二、什么是JVM、JDK、JRE&#xff1f;三、java跨平台实现原理四、java数据类型有哪些?五、char能不能存一个中文汉字?六、存在数字i加1小于i或者i减1小于i?七、什么是自动类型转换与强制类型转换?八、什么是装/拆箱&am…...

STM32快速搭建项目框架

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

JMH324-免费【最后一战LOL】MOBA竞技版本+单机一键端+视频教程+文本教程

资源介绍&#xff1a; 修改前打开【D:\ZHServer】文件夹里的【[1]一键启动.bat】&#xff0c;游戏不要打开&#xff0c;否则修改失败。 修改完以后重启架设程序才会生效。 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模型 鼠标交互&#xff08;没有强调场景的变换&#xff09; 鼠标命中测试&#xff08;HitTest 不推荐&…...

《金山 WPS AI 2.0:重塑办公未来的智能引擎》

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

RT2-使用NLP的方式去训练机器人控制器

目标 研究在网络数据上训练的视觉语言模型也可以直接结合到端到端的机器人控制中&#xff0c;提升泛化性以及获得突出的语义推理&#xff1b;使得单个的端到端训练模型可以同时学习从机器人观测到动作的映射&#xff0c;这个过程可以受益于基于网络上的语言和视觉语言数据的预训…...

VisActor vs ECharts: 哪个更适合你的数据可视化需求?

VisActor vs ECharts: 哪个更适合你的数据可视化需求&#xff1f; 在当今数据驱动的世界里&#xff0c;选择合适的数据可视化工具是至关重要的。ECharts作为广受欢迎的可视化库&#xff0c;已经在行业内拥有了长久的历史和广泛的用户基础。然而&#xff0c;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 &…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...