手把手教你成为白帽黑客!Web架构基础(上)

admin 2026-01-21 01:19:54 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文档详述Web架构基础与HTTP协议,重点讲解Nginx服务器的安装配置、多站点部署及日志管理。内容涵盖Basic认证、SSL证书加密、HTTPS强制跳转、Gzip压缩及访问控制等安全优化措施,深入解析location优先级、变量应用与防盗链技术,为初学者提供构建安全Web环境的实战指南。 综合评分: 86 文章分类: WEB安全,安全建设


0x03 响应空行

分隔作用,响应头结束和响应体开始

0x04 响应主体

包含服务器返回的实际数据内容

0x05 HTTP状态码

200 OK301 永久跳转 被浏览器记住302 临时跳转 被浏览器记住403 权限拒绝404 文件找不到500 服务器内部错误502 错误的网关504 网关超时

0x06 HTTP版本

HTTP/0.9    仅GET方法,无头部功能极简,无法扩展HTTP/1.0    新增POST/HEAD、头部字段、状态码仅支持短连接、无Host头HTTP/1.1    长连接、Host头、扩展方法、分块传输HTTP/2.0    二进制帧、多路复用、头部压缩,需HTTPS部署

1.8 HTML简单了解

HTML ( HyperText Markup Language ) 超文本标记语言 ,由 SGML (标准标记语言)发展而来,也叫 Web 页面。扩展名是 .html 或 .htm 。

HTML 是一种用来制作网页的标准标记语言。超文本是指超出普通文本范畴的文档,可以包含文本、图片、视频、音频、链接等元素。

HTML 不是一种编程语言,而是一种写给网页浏览器、具有描述性的标记语言。

0x01 HTML结构和标签格式

<!DOCTYPE&nbsp;html><html&nbsp;lang&nbsp;=&nbsp;"en">&nbsp;&nbsp;<head>&nbsp; &nbsp;&nbsp;<meta&nbsp;charset&nbsp;=&nbsp;"UTF-8">&nbsp; &nbsp;&nbsp;<title>ida小站</title>&nbsp;&nbsp;</head>&nbsp;&nbsp;<body>&nbsp; &nbsp;&nbsp;<h1>Hello World<h1>&nbsp;&nbsp;</body></html>

0x02 结构释义

<!DOCTYPE&nbsp;html>&nbsp; &nbsp; 告诉浏览器使用什么样的html或xhtml来解析html文档。<html></html>&nbsp; &nbsp; 文档开始标记和结束标记,告诉浏览器是HTML文档,之间是文档头部<head>&nbsp;和主体<body>。元素出现在文档开头部分,与之间的内容不会在浏览器的文档窗口显示,但是其间的元素有特殊重要的意义。<meta&nbsp;charset="UTF-8">&nbsp; &nbsp; 声明编码方式用UTF-8字符集。<title></title>&nbsp;&nbsp; &nbsp; 定义网页标题,在浏览器标题栏显示。<body></body>&nbsp; &nbsp; 主体之间的文本是可见的网页主体内容。

0x03 标签语法

<标签名&nbsp;属性1=“属性值1”&nbsp;属性2=“属性值2”……>内容部分</标签名>&nbsp;<标签名&nbsp;属性1=“属性值1”&nbsp;属性2=“属性值2”……&nbsp;/>
1、HTML标签由尖括号包围的特定关键词2、标签分为闭合和自闭合两种标签3、HTML不区分大小写4、标签可以有若干个属性,也可以不带属性,比如就不带任何属性5、标签可以嵌套,但是不可以交叉嵌套6、XHTML是实现HTML到XML的过渡。

1.9 演示编写网页

编写html代码

指令释义location块: location ~* \.png$1nbsp;{ }

是 Nginx配置语法 , 定义对所有以 .png结尾的文件的处理方式。

~* : 是一个正则表达式修饰符,表示不区分大小写匹配 。\. : 匹配任意字符, 这里 用反斜杠 \转义, 含义就是一个点。\.png : 表示 匹配所有以 .png结尾的文件。$: 表示字符串结束。
条件判断释义:&nbsp;if&nbsp;(&nbsp;$http_referer&nbsp;!~*&nbsp;"a.panch.com"&nbsp;) { }
$http_referer&nbsp;:&nbsp;&nbsp; &nbsp; 代表 HTTP请求头 referer 字段,包含请求页面之前的页面地址。!~* :&nbsp;&nbsp; &nbsp; 是正则表达式的否定匹配修饰符,"a.panch.com"&nbsp;:&nbsp;&nbsp; &nbsp; 是要匹配的字符串。!~*&nbsp;"a.panch.com"&nbsp;:&nbsp;&nbsp; &nbsp; 此判断是检查referer字段中是否不包含a.panch.com 字符串。return&nbsp;403:&nbsp;&nbsp; &nbsp; 判断为真(referer字段不含a.panch.com ),服务器返回403。

注意: 仅靠Referer检查限制对PNG图片访问不够安全, Referer字段可被用户伪造 。

进入配置:&nbsp;cd&nbsp;/etc/nginx/conf.d/编辑配置: vim 160.conf查看配置:&nbsp;cat&nbsp;-n 160.conf检查配置: nginx -t重启服务: systemctl restart nginx

此时查看第二个网站:发现 Logo无法显示

此时访问图片,返回 403报错,因为Referer为空,也不包含 a.panch.com 字符。

访问第一个网站时,发现无法显示 Logo图片,显示404报错,无法找到。

查看错误日志

发现 a网站访问的根目录为默认根目录,而非修改后的根目录,所以显示failed失败。

进入服务目录:&nbsp;cd&nbsp;/var/log/nginx/查看错误日志:&nbsp;cat&nbsp;-n error.log

默认根目录:&nbsp;/usr/share/nginx/html/改后根目录:&nbsp;/usr/share/nginx/html/one/

原因如下:带有符号的 location块的优先级高于不带符号的。

添加的 locatoin优先级更高,但没根目录,所以png图片信息自动到默认目录去找。

解决 1:在每个location块里都添加改动后的站点根目录(不推荐,太麻烦)。

解决 2:将站点根目录配置添加到server块里,在全局指定站点根目录。

此时查看第一个网站:恢复正常

查看第二个网站:无法盗链

十、Nginx中英文自动匹配

Nginx 服务器会通过双重语言适配机制为用户自动匹配网页内容:首先优先检测浏览器语言设置,若检测到英文偏好则展示英文内容,中文偏好则展示中文内容;若浏览器未明确语言设置,服务器会进一步通过IP地址判断地域,国内IP默认返回中文,国外IP默认返回英文。最终实现“用户无感知”的语言适配,确保不同地区、不同语言习惯的用户都能快速获取熟悉的网页内容。

10.1 案例演示

0x01 创建演示网站

复制第一个网站的配置文件作为新建网站的配置文件

进入配置目录:&nbsp;cd&nbsp;/etc/nginx/conf.d/查看配置文件:&nbsp;ls复制配置文件:&nbsp;cp&nbsp;160.conf yuyan.conf

0x02 修改此网站配置文件

若accept_language值以en开头,则返回英文,否则返回中文,且会根据IP地址返回不同语言的网站。

编辑: vim yuyan.conf查看:&nbsp;cat&nbsp;-n yuyan.conf

网站域名server_name改为yuyan.com&nbsp;在hosts文件中添加此域名C:\Windows\System32\drivers\etc\hosts

0x03 创建对应网站根目录

进入根目录:&nbsp;cd&nbsp;/usr/share/nginx/html/创建网站目录:&nbsp;mkdir&nbsp;yuyan创建中文目录:&nbsp;mkdir&nbsp;en创建英文目录:&nbsp;mkdir&nbsp;cn

关于日志配置,添加日志配置重启后,日志文件会自动添加。

分别在 en和cn里创建英文和中文版的index.html文件。

在里面分别写上中英文内容

注意:根目录配置变更到 location块里,需要填写详细根目录地址。

访问网站看效果

在浏览器设置里添加英文,选择英文选项,并移动到最顶端。

此时网页请求头的语言是英文开头

若中文放第一个位置则为中文开头

查看访问效果:显示为英文


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:南风安全站 南风 南风《手把手教你成为白帽黑客!Web架构基础(上)》

评论:0   参与:  0