tryhackme-预安全-网络如何工作-网站如何工作-11

news/2025/10/20 0:36:30/文章来源:https://www.cnblogs.com/sec875/p/19151654

tryhackme-Pre Security-How The Web Works-How Websites Work
房间地址:https://tryhackme.com/room/howwebsiteswork
这是网络安全入门的基础模块的计算机科学基础知识:How Websites Work(网站如何工作),序号 01 表示第一篇文章,当你不知道从哪里开始的时候,你可以按照数字顺序来进行参考即可。

How Websites Work

Task 1 How websites work

在本课程结束时,您将了解网站的创建方式,并了解一些基本的安全问题。

当您访问网站时,您的浏览器(例如 Safari 或 Google Chrome)会向网络服务器发出请求,询问您正在访问的页面的信息。服务器会返回浏览器用来显示页面的数据;网络服务器只是位于世界某个地方的一台专用计算机,用于处理您的请求。
image

网站由两个主要组件组成:
前端(客户端)——浏览器呈现网站的方式。
后端(服务器端)——处理请求并返回响应的服务器。
浏览器向 Web 服务器发出请求时还涉及许多其他流程,但现在,您只需了解您向服务器发出请求,服务器会返回浏览器用来呈现信息的数据。

Task 2 HTML

网站主要使用以下语言创建:

HTML,用于构建网站并定义其结构
CSS,用于通过添加样式选项使网站外观更美观
JavaScript,用于通过交互功能在页面上实现复杂的功能

超文本标记语言 (HTML) 是编写网站的语言。元素(也称为标签)是 HTML 页面的构建块,用于指示浏览器如何显示内容。以下代码片段展示了一个简单的 HTML 文档,其结构对于每个网站都是相同的:
image

HTML 结构(如屏幕截图所示)包含以下组件:

<!DOCTYPE html> 定义该页面为 HTML5 文档。这有助于跨不同浏览器实现标准化,并告知浏览器使用 HTML5 来解释该页面。
<html> 元素是 HTML 页面的根元素,所有其他元素都位于此元素之后。
<head> 元素包含页面信息(例如页面标题)。
<body> 元素定义 HTML 文档的正文;浏览器中仅显示正文中的内容。
<h1> 元素定义大标题。
<p> 元素定义段落。
还有许多其他元素(标签)用于不同目的。例如,按钮 (<button>)、图像 (<img>)、列表等等的标签。

标签可以包含各种属性,例如可用于设置元素样式的 class 属性(例如,使标签具有不同的颜色)<p class="bold-text">,以及用于指定图像位置的 src 属性:<img src="img/cat.jpg">。一个元素可以包含多个属性,每个属性都有其独特的用途,例如 <p attribute1="value1" attribute2="value2">

元素还可以包含一个 id 属性(<p id="example">),该属性对于每个元素都是唯一的。与 class 属性(多个元素可以使用相同的 class)不同,一个元素必须具有不同的 id 才能唯一地标识它们。元素 id 用于设置样式并通过 JavaScript 进行识别。

您可以通过右键单击并选择“查看页面源代码”(Chrome)/“显示页面源代码”(Safari)来查看任何网站的 HTML。

Task 3 JavaScript

JavaScript (JS) 是世界上最流行的编程语言之一,它使页面变得具有交互性。HTML 用于创建网站结构和内容,而 JavaScript 用于控制网页的功能——如果没有 JavaScript,页面将没有交互元素,并且始终是静态的。JS 可以实时动态更新页面,例如,当页面上发生特定事件(例如,用户点击按钮时)时,可以更改按钮的样式,或者显示动态动画。
JavaScript 被添加到页面源代码中,可以在 <script> 标签内加载,也可以通过 src 属性远程包含:<script src="/location/of/javascript_file.js"></script>
以下 JavaScript 代码在页面上找到 ID 为“demo”的 HTML 元素,并将元素的内容更改为“Hack the Planet”: document.getElementById("demo").innerHTML = "Hack the Planet";

HTML 元素也可以包含事件,例如“onclick”或“onhover”,这些事件会在事件发生时执行 JavaScript 代码。以下代码会将 ID 为 demo 的元素的文本更改为“Button Clicked”:<button onclick='document.getElementById("demo").innerHTML = "Button Clicked";'>Click Me!</button> - onclick 事件也可以在 JavaScript 脚本标签内定义,而不是直接在元素上定义。

Task 4 Sensitive Data Exposure

当网站未能妥善保护(或删除)最终用户的敏感明文信息时,就会发生敏感数据泄露;这些信息通常存在于网站的前端源代码中。

我们现在知道,网站是由许多 HTML 元素(标签)构建的,所有这些元素我们只需“查看页面源代码”即可看到。网站开发人员可能忘记删除登录凭据、指向网站私密部分的隐藏链接,或 HTML 或 JavaScript 中显示的其他敏感数据。

敏感信息可能会被攻击者利用,进一步访问 Web 应用程序的不同部分。例如,可能存在包含临时登录凭据的 HTML 注释,如果您查看页面源代码并发现这些注释,则可以使用这些凭据登录应用程序的其他部分(或者更糟的是,用于访问网站的其他后端组件)。

每当评估 Web 应用程序的安全性问题时,您应该做的第一件事就是检查页面源代码,看看是否可以找到任何暴露的登录凭据或隐藏链接。
你说有一个蜜罐但不知道放哪里好,放这里:
image

Task 5 HTML Injection

HTML 注入是一种漏洞,当未经过滤的用户输入显示在页面上时就会发生。如果网站未能对用户输入进行过滤(过滤用户输入的任何“恶意”文本),并且该输入在页面上使用,攻击者就可以将 HTML 代码注入易受攻击的网站。

输入过滤对于确保网站安全至关重要,因为用户输入到网站的信息通常会用于其他前端和后端功能。您将在另一个实验中探索一个漏洞,即数据库注入。您可以通过控制查询中直接使用的输入来操纵数据库查找查询,从而以其他用户身份登录。但现在,我们先来关注 HTML 注入(客户端)。

当用户可以控制其输入的显示方式时,他们可以提交 HTML(或 JavaScript)代码,浏览器会在页面上使用这些代码,从而允许用户控制页面的外观和功能。
image

上图展示了表单如何将文本输出到页面。用户在“你的名字是什么”字段中输入的内容都会传递给 JavaScript 函数并输出到页面。这意味着,如果用户在字段中添加了自己的 HTML 或 JavaScript,sayHi 函数会使用它并将其添加到页面中——这意味着您可以添加自己的 HTML(例如 <h1> 标签),它会将您的输入输出为纯 HTML。

一般规则是永远不要信任用户输入。为了防止恶意输入,网站开发人员应该在 JavaScript 函数中使用用户输入的所有内容之前对其进行过滤;在这种情况下,开发人员可以删除所有 HTML 标签。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/940710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025塑料托盘优质厂家推荐,力森塑业科技多元化产品满足各类需求!

2025塑料托盘优质厂家推荐,力森塑业科技多元化产品满足各类需求!随着物流仓储行业的快速发展,塑料托盘作为重要的物流工具,其市场需求日益增长。然而,当前塑料托盘领域面临着诸多技术挑战,这些问题不仅影响了产品…

嵌入式实验3串口通信--任务二USART1通信

1)STM32系统给上位机(win10)连续发送“hello windows!”,win10采用“串口助手”工具接收。如果STM32的连续发送之间不加延时语句,观察win10端是否出现接收数据丢失的现象。 1.1在STM32CubeMX中建立一个新的工程。…

[SSH] sftp 基于SSH的交互式文件传输工具

[SSH] sftp 基于SSH的交互式文件传输工具$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");目录01 背景1.1 简介1.2 sftp 与 ftp 的对比1.3 sftp 与 scp 适用场…

java.math 包详解

java.math 包详解java.math 包是 Java 提供的用于高精度数学计算的工具包,主要包含两个核心类:BigInteger 和 BigDecimal。这些类用于处理超出基本数据类型范围的数值运算。 1. BigInteger 类BigInteger 用于表示任意…

Drive Snapshot

Drive SnapshotAcronis True ImageATI老版本非常棒

Python接入A股level2千档盘口和逐笔委托

Python接入A股level2千档盘口和逐笔委托本文将以实际的代码实践为例,探讨如何通过一套集成了A股基础行情、Level-2高速行情WebSocket接口、量化交易接口与金融数据库的服务,来系统性地解决这些问题。你将看到如何用简…

20232319 2025-2026-1 《网络与系统攻防技术》实验二实验报告

一、实验内容 1.实践目标 (1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定) PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程 (2)使用socat获取主机操作Shell, 任务计划启动…

刷题日记—洛谷循环题单

1.数学思想在算法题中的应用: 2.回文数的判定:

学号 2025-2026-1 《网络与系统攻防技术》实验二实验报告

一、实验内容 1.实践目标 (1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定) PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程 (2)使用socat获取主机操作Shell, 任务计划启动…

为什么需要学习变异的算法?

对,“金标准得到的时间很长” 是一个非常现实且关键的点,尤其在临床或产品落地场景中,时间成本本身就是限制模型迭代和优化的瓶颈。✅ 补充第6点(在你这个设定下):障碍类别 具体原因 影响金标准延迟 金标准(如S…

今天搞了新的回归,不显著

今天搞了新的回归,可能被解释变量的度量存在问题,也可能是解释变量有毛病,总之回归结果跟预期的正好相反,甚至反的很显著,这也太恶心了。

shell编程学习笔记005之until循环

until循环语句各种用法探索语法: until 条件 do执行; done

shell编程学习笔记006之select循环

select循环语句各种用法探索语法: select 变量 in "列表" dolist done说明: select可以显示带编号的菜单,选择并执行不同的功能。 select是死循环,可以通过break语句终止循环,也可以使用Ctrl+D或Ctrl+C…

burpsuite抓取小程序公众号数据包-cnblog

burpsuite抓取小程序 公众号https数据包 burpsuite官网下载 https://portswigger.net/burp破解工具 通过网盘分享的文件:burp破解工具.zip 链接: https://pan.baidu.com/s/1An6ebL2LdM3VvFhJSRf4Zg?pwd=8888 提取码…

2026 NOI 做题记录(七)

推荐阅读:E、G、X、AA、AEContest Link \(\text{By DaiRuiChen007}\)A. [QOJ833] Cells Blocking (4) Problem Link 首先任意取出一条路径,上面至少有一个点被删除。 只保留同时能到达 \((1,1),(n,m)\) 的点,那么按…

关于本学期我的编码规范与数学之美第一章观后感 - C

一、规范 在阅读了大型公司公开的编码规范文章后,以下是我总结出的自己应当遵守的编码规范: 1.文件与命名规范 1)文件与命名规范 文件名、源文件后缀用 .cpp,头文件用 .h 命名用小写字母 + 下划线(蛇形命名) 2)…

GPT/Claude中转API部署实战指南_一文读懂AI聚合架构

GPT/Claude中转API部署实战指南_一文读懂AI聚合架构GPT/Claude 中转站技术架构详解 随着 AI 模型(如 OpenAI 的 GPT 系列和 Anthropic 的 Claude)在全球范围内的广泛应用,跨区域访问、稳定性保障和高并发请求处理成…

esp8266模块开发准备工作

文档:NodeMCU Documentation 涉及软件:构建固件 通过在线构建网站构建固件(方式一) NodeMCU custom builds勾选要使用的库,然后设置好邮件地址(部分地址可能不支持),然后点击开始构建即可,完成后构建结果会发…

线程--线程生命周期、Synchronized

四、线程的生命周期 JDK 中用 Thread.State 枚举代表了线程的几种状态NEW:尚未启动对啊线程处于此状态 RUNNABLE:在Java虚拟机中执行的线程处于此状态(可运行状态,但不一定马上running,什么时候运行需要看操作系统…

C#中Yolo开发环境

在C#中进行Yolo部署,需要安装以下第三方库。OpenCVSharp选择目前最稳定的4.6版本。