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

网络安全(黑客)零基础入门

导语

    什么是 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&#xff0…...

获取历史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(内存)内,每个用户通过终端登录系统后,就会运行。负责不间断的接收用户的输入&#xff0c…...

宝尊电商短期前景堪忧,宝尊国际能否取得成功还有待验证

来源:猛兽财经 作者:猛兽财经 核心业务面临短期逆风 在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 循环与向量…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

uniapp中使用aixos 报错

问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析,分为​​已启动​​和​​未启动​​两种场景: 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​:当其他组件(如Activity、Service)通过ContentR…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...

Python爬虫实战:研究Restkit库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...

【阅读笔记】MemOS: 大语言模型内存增强生成操作系统

核心速览 研究背景 ​​研究问题​​:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...