tryhackme-Pre Security-How The Web Works-Putting it all together
房间地址:https://tryhackme.com/room/puttingitalltogether
这是网络安全入门的基础模块的计算机科学基础知识:Putting it all together(总结),序号 01 表示第一篇文章,当你不知道从哪里开始的时候,你可以按照数字顺序来进行参考即可。
Putting It All Together
Task 1 Putting It All Together
整合
从之前的模块中,您已经了解到,当您在浏览器中请求网页时,后台会发生很多事情。
总而言之,当您请求网站时,您的计算机需要知道它需要与之通信的服务器的 IP 地址;为此,它会使用 DNS。然后,您的计算机使用一组称为 HTTP 协议的特殊命令与 Web 服务器通信;Web 服务器随后返回 HTML、JavaScript、CSS、图像等,您的浏览器会使用这些数据来正确格式化并显示网站。
还有一些其他组件可以帮助 Web 更高效地运行并提供额外的功能。
Task 2 Other Components
- Load Balancers 负载均衡器
当网站的流量开始变得非常大,或者正在运行需要高可用性的应用程序时,单个 Web 服务器可能无法胜任。负载均衡器提供两项主要功能:确保高流量网站能够处理负载;以及在服务器无响应时提供故障转移。
当您使用负载均衡器请求网站时,负载均衡器会首先接收您的请求,然后将其转发到其背后的多台服务器之一。负载均衡器使用不同的算法来决定哪个服务器最适合处理该请求。这些算法的几个示例包括循环算法(轮询将请求发送到每个服务器)和加权算法(检查服务器当前正在处理的请求数,然后将请求发送到最不繁忙的服务器)。
负载均衡器还会定期检查每台服务器,以确保它们正常运行;这称为健康检查。如果服务器响应不正常或没有响应,负载均衡器将停止发送流量,直到它再次正常响应为止。
- CDN (Content Delivery Networks)
CDN 是减少网站流量的绝佳资源。它允许您托管网站上的静态文件,例如 JavaScript、CSS、图片和视频,并将它们托管在全球数千台服务器上。当用户请求某个托管文件时,CDN 会找出最近的服务器物理位置,并将请求发送到该服务器,而不是可能发送到地球的另一端。
- Databases
网站通常需要一种为用户存储信息的方式。网络服务器可以与数据库通信,以存储和调用其中的数据。数据库的种类繁多,从简单的纯文本文件到提供速度和弹性的复杂多服务器集群。您会遇到一些常见的数据库:MySQL、MSSQL、MongoDB、Postgres 等等;每种数据库都有其特定的功能。
- WAF (Web Application Firewall)
WAF 位于您的 Web 请求和 Web 服务器之间;其主要目的是保护 Web 服务器免受黑客攻击或拒绝服务攻击。它会分析 Web 请求,以发现常见的攻击技术,无论请求是来自真实浏览器还是机器人程序。它还会利用速率限制来检查 Web 请求是否过多,速率限制是指每秒仅允许来自某个 IP 的一定数量的请求。如果某个请求被视为潜在攻击,则会被丢弃,并且不会发送到 Web 服务器。
Task 3 How Web Servers Work
Web 服务器的工作原理。
- 什么是 Web 服务器?
Web 服务器是一种软件,它监听传入的连接,然后利用 HTTP 协议向客户端交付 Web 内容。您遇到的最常见的 Web 服务器软件是 Apache、Nginx、IIS 和 NodeJS。Web 服务器从其根目录(在软件设置中定义)交付文件。例如,在 Linux 操作系统中,Nginx 和 Apache 共享相同的默认位置 /var/www/html
,而在 Windows 操作系统中,IIS 使用 C:\inetpub\wwwroot
。因此,例如,如果您请求文件 http://www.example.com/picture.jpg
,它将从其本地硬盘发送文件 /var/www/html/picture.jpg
。
提示:NodeJS 是web服务器后端环境,与PHP,JAVA,ASP等同理,能解释为什么JavaScript可以RCE
- Virtual Hosts
Web 服务器可以托管多个使用不同域名的网站;为此,它们使用虚拟主机。 Web 服务器软件会检查 HTTP 标头中请求的主机名,并将其与其虚拟主机进行匹配(虚拟主机只是基于文本的配置文件)。如果找到匹配项,则会提供正确的网站。如果没有找到匹配项,则会提供默认网站。
虚拟主机可以将其根目录映射到硬盘上的不同位置。例如,one.com 映射到 /var/www/website_one
,two.com 映射到 /var/www/website_two
。
您可以在 Web 服务器上托管的不同网站数量没有限制。
提示:这在一定程度上可以解释同IP下,某个虚拟主机web程序被拿下后,通过同服务器IP来威胁到你的网站,类似从旁站下手。
- Static Vs Dynamic Content
顾名思义,静态内容是指永远不会改变的内容。常见的例子包括图片、JavaScript、CSS 等,但也包括永远不会改变的 HTML。此外,这些文件直接由网络服务器提供,无需进行任何修改。
另一方面,动态内容是指可能随着不同请求而变化的内容。以博客为例。博客的主页会显示最新的文章。如果添加了新文章,主页就会更新为最新文章;或者,博客的搜索页面也会显示不同的结果,具体取决于您搜索的关键词。
这些对您最终看到的内容的更改都是在所谓的后端使用编程语言和脚本语言完成的。之所以称为后端,是因为所有操作都在后台完成。您无法查看网站的 HTML 源代码,也无法了解后端正在发生的事情,而 HTML 是后端处理的结果。您在浏览器中看到的所有内容都称为前端。
- Scripting and Backend Languages
后端语言的功能几乎无所不能,而这些功能正是网站与用户互动的关键。这些语言的例子(排名不分先后 :p)包括 PHP、Python、Ruby、NodeJS、Perl 等等。这些语言可以与数据库交互、调用外部服务、处理用户数据等等。一个非常基本的 PHP 示例如下:访问网站 http://example.com/index.php?name=adam
如果 index.php 是这样构建的:
<html><body>Hello <?php echo $_GET["name"]; ?></body></html>
它将向客户端输出以下内容:
<html><body>Hello adam</body></html>
您会注意到,客户端看不到任何 PHP 代码,因为它位于后端。这种交互会给尚未安全创建的 Web 应用程序带来更多安全问题,您将在后续模块中了解到这一点。
Task 4 Quiz
测验
点击右侧的“查看网站”按钮。运用你在其他模块中学到的知识,将图块按照网站请求的正确顺序拖放,即可显示旗帜。
注意:将图块放置在正确位置时,它将以绿色高亮显示。如果图块放置位置错误,它将以红色高亮显示。请勿刷新页面,否则所有图块将再次重置为空白!
没什么东西,访问浏览器访问web服务器时的步骤:浏览器请求网站,检查本地DNS缓存,请求根DNS服务器发现权威DNS服务器,权威DNS服务器返回该网站的IP地址,请求通过web防火墙,请求通过负载均衡器,连接网站的80或443端口,web服务器接收到GET请求,web服务器与数据库交互,响应HTML等到你的浏览器客户端