网络安全(黑客)零基础入门
导语
什么是 Web 安全?我又该如何入门学习它呢?学习过程中又应注意哪些问题呢?...
或许你的心中有着这样的疑问、不过别着急,本文会为你一一解答这些问题。
正文
定义
Web 安全,顾名思义便是由保障 Web 应用能够持续安全运行而衍生出的一个分支领域。
Web 应用指的是一个网站的前端页面到后端服务,可以粗略的理解为一个网站及其配套的相关服务,该领域中常见
漏洞有 SQL 注入漏洞,XSS 漏洞,CSRF 漏洞等等,漏洞种类多样,趣味性强,较为适合新手入门。
下面为你介绍 Web 安全方面的常见漏洞,以下讲解主要从原理角度出发,旨在帮助新手朋友更好的理解相关漏洞,具体技术细节暂不讨论。
常见漏洞
SQL 注入(SQL Injection)
网站,也就是 web 应用中往往会涉及到数据的查询与修改,对数据进行操作则需要用到 SQL 语言(结构化查询语言 (Structured Query Language) 简称 SQL,是一种特殊目的的编程语言)。
网站在使用 SQL 查询数据时,用户输入的信息或提交的参数(比如你在使用百度时输入的 “关键词”,登录某些网站时提交的账户密码..)将会参与到 SQL 数据查询的过程中,一旦用户提交了有害数据,便有可能对网站运行产生危害。
将有害数据 “注入” 到 SQL 查询过程之中,这也正是 “SQL 注入” 得名的缘由。
SQL 注入漏洞往往会导致数据泄露,例如前些年爆出的沸沸扬扬的” 社工库 ",” 人 rou" 搜索,全球数十亿密码泄露等事件,他们的背后或多或少有着 SQL 注入的影子。
SQL 注入的定义为:
当 Web 应用向后台数据库传递 SQL 语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的 SQL 语句,直接输入数据库进行执行,获取或修改数据库中的数据。
XSS 跨站脚本攻击(Cross-Site Scripting,XSS)
同样是由于网站对于用户的输入内容没有进行严格的过滤处理,一些恶意的脚本代码被用户的浏览器执行而引发了 XSS 漏洞。
一个网站的呈现是基于 HTML,CSS,JS 等脚本语言的,浏览器的作用是什么?简单来说便是将只有计算机才能 “读懂”的脚本语言及代码渲染成我们所看到的的图像与文字。
这里以百度为例。在与架设着网站的服务器通信时,我们实际上收到的是使用 HTML 等语言编写的源代码,浏览器会将该源代码 “翻译”出来。
(浏览器将下方的源代码 “翻译” 成 “百度搜索” 的页面)
如果我们能利用网站的某些缺陷,将自行构造的恶意脚本代码‘’注入” 到网站源代码之中,在别的用户在浏览网页时,我们构造的恶意代码便会被浏览器 “翻译” 出来,造成危害(Cookie 泄露,键盘记录等),这便形成了 XSS 漏洞。
CSRF 跨站请求伪造(Cross Site Request Forgery)
该漏洞往往不直接攻击网站服务器,而是冒充用户在站内的正常操作以达到攻击目的。我们在与网站进行交互操作时,绝大多数操作是基于浏览器与网站服务器的通信请求的,比如我们会在某些购物网站下商品订单,给指定用户转账,或者查询自己的考试成绩。
如果能够在用户没有察觉的情况下,“悄无声息” 通过浏览器伪造一些请求操作,进而产生对用户有害的攻击行为,那么便形成了 CSRF 漏洞。
上文提到过,XSS 漏洞可以在用户不知情的情况下执行恶意操作,如果我们在 XSS 攻击代码中包含伪造好的特定请求呢?这便与 CSRF 漏洞不谋而合。所以,XSS 与 CSRF 常相配合使用,威力巨大。
防范 CSRF 漏洞,需要添加 token 或 referer 来防御,云影安全后续会对此进一步讲解。
DDOS 分布式拒绝攻击 (Distributed Denial of Service)
起源于二十世纪九十年代,历经二十多年发展而经久不衰,DDoS 攻击已经成为网络安全领域影响最为深远的威胁之一。
严格地来讲,DDOS 并不完全归属于 Web 安全的范畴,凡是对外提供服务的服务器或主机都存在被 DDOS 攻击的风险,但 DDOS 攻击在 Web 领域较为常见且危害大,我们在这里加以讲解。
那么什么是 DDOS 攻击呢?如果多台主机对目标网站或服务器发送大量请求,超出了该网站或服务器的处理能力上限,导致服务瘫痪,这种行为便可以称作 DDOS 攻击。
举一个较为经典的例子,假设一个餐厅最多可以同时容纳 50 人就餐,假设在极短时间内该餐厅涌入成百上千的顾客,该餐厅的正常就餐秩序必然会受到毁灭性的冲击。
DDOS 攻击如今已发展出多种攻击模式与手段,目前还没有一个较为完美的应对策略,关键点在于精心发动的 DDOS攻击往往会利用合理的服务请求来占用过多的服务资源,难与正常用户的请求相区分,从而使服务器无法处理合法用户的指令。
方法论
孤帆终究要起航,侠客也要去闯荡。在你开始踏上 Web 安全之路前,我们愿与你分享一些在探索学习中可能会有所帮助的心得与经验。
1. 亲手实践
- 纸上得来终觉浅,绝知此事要躬行。
- 在学习漏洞原理或是利用技巧时,最好不要止步于只看懂技术文章。相关的介绍文章往往以讲解思路为主,为保证文章整体的连贯性,部分技术细节会被忽略掉。例如程序的运行环境,设备的网络情况以及相关应用组件的具体版本号。
- 然而对于初学者来说,这些技术细节同样至关重要,如果没有亲手实践过,亲手复现出相同的漏洞或利用技巧,你永远不会接触到那些被忽视的种种细节。而细节决定成败,对漏洞利用过程的残缺理解会对进一步的学习探索造成难以估量的影响。
- 同时,动手操作也有利于巩固对于所学知识的理解与记忆,加深印象。漏洞种类繁多,差异化的利用条件同样决定着漏洞利用的成功与否,因此在动手实践复现漏洞的同时,还需要完整的笔记记录。
2. 构建体系
- 什么是体系?体系的本质是各个知识点的灵活串联与应用。在体系里,知识不再是孤零零散落在大脑各处信息点,而是互相补充互相协作而成的系统化的有机整体。
- 其实这并不难理解。举个简单的例子,假如现在有一篇中文技术文档放在面前,虽然我们并不是专业人士,但将这份文档读完还是可以做到的,但如果换一个不懂中文的外国人来看这篇文章,那么他连阅读都无法完成。我们之所以可以将一篇不能完全理解的专业文章看完,是因为我们有一定的语文基础知识。
- 也就是说,在我们的大脑里,储存着识字的能力。我们可以将这些已经拥有的能力整合在知识体系中。这样的话,当我们去学习新知识时,完全可以从构建好的体系里,找到已经形成的能力。
- 好处即,完全陌生的知识会被分解形成一些小的知识点。然后再联系体系中已有的能力,去逐一攻克这些陌生的难题。
3. 分享交流
- 什么是黑客?真正的黑客可能与大多数人所理解的有所差异。黑客,由英语 Hacker 音译出来的,狭义是指专门研究、发现计算机和网络漏洞的计算机爱好者。根据黑客的原始定义,黑客对计算机有着狂热的兴趣和执着的追求,不断推动着计算机和网络的发展与完善。显而易见,黑客与网络安全紧密相关。
- 黑客精神是关于开放的精神。而黑客行为是基于团队的,只有开放才能让参与者们发挥出最大的能量,去修补,去改造。互联网上最有价值行为就是「奉献」,技术在奉献中获得了进步,知识在共享中得到了丰富。“分享交流” 无疑是构成互联网这座大厦的基石,只有知识共享才能推动我们不断向前走。逛一逛社区,分享些自我学习的心得,于人于己,都是大有裨益的。
相关文章:

网络安全(黑客)零基础入门
导语 什么是 Web 安全?我又该如何入门学习它呢?学习过程中又应注意哪些问题呢?... 或许你的心中有着这样的疑问、不过别着急,本文会为你一一解答这些问题。 正文 定义 Web 安全,顾名思义便是由保障 Web 应用能够持续…...
Al Go: 蒙特卡洛树搜索(MCTS)简介
目录 1. 前言 1.1 Minimax 1.2 剪枝 1.3 蒙特卡洛树搜索 1.4 为什么随机走子会可行呢? 2. vanilla Monte Carlo tree search 3. UCT-based trade-off between exploitation and exploration 4. MCTS基本算法流程 5. Efficiency Through Expert Policies 6…...
Client-go操作Deployment
在工作中需要对kubernetes进行自定义资源的开发,操作K8s的资源肯定是必不可少的。K8s原生语言是用Go编写的,所以在CRD中使用client-go来操作资源。本次介绍一下使用client-go来操作Deployment。 1. 创建main函数 func main() {homePath : homedir.Home…...

设计模式——单例模式(懒汉和饿汉)
单例模式 一、概念 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。一个类只能有一个实例在生活中是很常见的,比如打印机程…...
详解——Vue3递归函数功能
在 Vue 3 中,递归函数是一种在组件中调用自身的技术。递归函数在解决树状数据结构、无限级分类、嵌套组件等情况下非常有用。以下是一个示例,展示如何在 Vue 3 中实现递归函数的功能、代码和原理: 1. 创建递归组件: 首先&#x…...

【VSCode】查看二进制文件
1.安装插件Hex Editor 2.打开二进制文件 3.执行Hex Editor命令...
C#设计模式之观察者模式
题目:假设你正在开发一个简单的新闻发布系统,该系统允许用户订阅不同的新闻频道,并在有新闻发布时向订阅者发送通知。使用观察者模式设计和实现该系统。观察者模式的相关概念和定义: 观察者模式是一种行为设计模式,它定…...

小红书攻略:爆款引流,如何在激烈竞争中脱颖而出?
小红书(RED)作为国内最具影响力的社交电商平台之一,是很多品牌运营者的首选之一。然而,在小红书的激烈竞争中,如何快速引流、吸引关注,成为了品牌运营者面临的挑战。本篇文章一秒推小编将为您介绍小红书运营…...
Ubuntu中的安装卸载及删除方法
说明:由于图形化界面方法(如Add/Remove... 和Synaptic Package Manageer)比较简单,所以这里主要总结在终端通过命令行方式进行的软件包安装、卸载和删除的方法。 一、Ubuntu中软件安装方法 1、APT方式 (1࿰…...
获取历史dokcer镜像项目,并上传gitlab,再打包镜像管理
今天遇到一个问题: 发现一个部署在Jenkins的脚本用的docker镜像是:test_project:v20191108,即这个项目是19年的一个版本,由于代码不断更新,用现在的最新代码运行该脚本,可能不能运行了,必须用19…...

【Go语言】Golang保姆级入门教程 Go初学者chapter3
Go语言 第三章 运算符 下划线“_”本身在Go中一个特殊的标识符,成为空标识符。可以代表任何其他的标识符,但是他对应的值就会被忽略 仅仅被作为站维度使用, 不能作为标识符使用 因为Go语言中没有private public 所以标记变量首字母大写代表其…...
网络防御(4)
一、结合以下问题对当天内容进行总结 1. 什么是IDS? 2. IDS和防火墙有什么不同? 3. IDS工作原理? 4. IDS的主要检测方法有哪些详细说明? 5. IDS的部署方式有哪些? 6. IDS的签名是什么意思?签名过滤器有什么…...
conda错误处理:ResolvePackageNotFound
当运行conda env create -f environment.yaml时出现"ResolvePackageNotFound"错误,这可能是由于环境配置文件中指定的依赖项无法找到或不可用。 错误消息中列出的依赖项包括pip20.3、python3.8.5和cudatoolkit11.3。 尝试以下解决方案: 更新…...
linux初学者小命令
linux初学者小命令 一.在正式学习linux命令之前需要先认识一下linux环境中命令是如何被执行的shell是一个属于linux内核的软件,在系统启动后加载进RAM(内存)内,每个用户通过终端登录系统后,就会运行。负责不间断的接收用户的输入,…...

宝尊电商短期前景堪忧,宝尊国际能否取得成功还有待验证
来源:猛兽财经 作者:猛兽财经 核心业务面临短期逆风 在2023年第一季度财报中,宝尊电商(BZUN)表示其电商业务(简称BEC)主要包括:品牌的门店运营、客户服务以及物流和供应链管理、IT和数字营销等增值服务”。…...

百川智能发布首个530亿参数闭源大模型,今年追上GPT-3.5
4月官宣创业,6月15日发布第一款7B开源模型,7月11日发布第二款13B、130亿参数开源模型。 平均保持2个月一个版本发布速度,8月8日,百川智能发布了创业以来的首个530亿参数闭源大模型——Baichuan-53B(以下简称“53B”&a…...
Redis的常用数据结构
StringListhashsetzset 1.字符串类型是Redis最基础的数据结构 使用场景: 缓存功能 Redis 作为缓存层,MySQL作为存储层,绝大部分请求的数据都是从Redis中获取。由于Redis具有支撑高并发的特性,所以缓存通常能起到加速读写和降低后端压力的作…...

深入JVM - JIT分层编译技术与日志详解
深入JVM - JIT分层编译技术与日志详解 文章目录 深入JVM - JIT分层编译技术与日志详解1. 背景简介2. JIT 编译器2.1. 客户端版本的编译器: C12.2. 服务端版本的编译器: C22.3. Graal JIT 编译器 3. 分层编译技术(Tiered Compilation)3.1. 汇聚两种编译器的优点3.2. 精准优化(Ac…...

临时文档2
java 中 IO 流分为几种? 按照流的流向分,可以分为输入流和输出流;按照操作单元划分,可以划分为字节流和字符流;按照流的角色划分为节点流和处理流。 Java Io流共涉及40多个类,这些类看上去很杂乱,但实际…...

[深度学习入门]PyTorch深度学习[数组变形、批量处理、通用函数、广播机制]
目录 一、前言二、数组变形2.1 更改数组的形状2.1.1 reshape2.1.2 resize2.1.3 T(转置)2.1.4 ravel2.1.5 flatten2.1.6 squeeze2.1.7 transpose 2.2 合并数组2.2.1 append2.1.2 concatenate2.1.3 stack 三、批量处理四、通用函数4.1 math 与 numpy 函数的性能比较4.2 循环与向量…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...