Web技术核心与安全风险:从“盖房子”到“拆房子”
Web技术核心与安全风险:从“盖房子”到“拆房子”
大家好,我是你们的网络安全向导。前面我们聊了网络通信、Windows和Linux安全,今天终于要进入最激动人心的领域——Web安全。你每天刷的网站、点的链接、填的表单,背后都有一套复杂的技术在运转。黑客为什么能黑掉网站?因为他们比你更懂这套技术是怎么“盖”起来的,然后找到“承重墙”上的裂缝。
别担心,我们不写代码,而是用盖房子的比喻,让你轻松搞懂Web四大核心、服务器漏洞、前后端原理,以及最危险的Webshell和反序列化漏洞。准备好了吗?戴上安全帽,我们开始“拆解”Web世界!
一、Web四大核心——网站是怎么搭起来的?
Web的定义——互联网上的“大商场”
Web(万维网)就是通过浏览器访问的全球性信息服务体系。你打开浏览器输入网址,就能看到网页、图片、视频,就像走进一座巨大的线上商场。
比喻:Web = 商场大楼,浏览器 = 你的购物车,HTTP/HTTPS = 商场里的传送带。
1. Web服务器——存放商品的“仓库”
Web服务器是一台24小时开机的电脑,专门存储网页、图片等资源,并响应浏览器的请求。常见的Web服务器软件有:
- Apache:老牌劲旅,市场占有率曾经最高。
- Nginx:轻量级,高并发能力强,很多大厂在用。
- IIS:微软家的,一般搭配Windows Server。
比喻:Web服务器就像商场的仓库,你(浏览器)想要一件商品,仓库管理员(服务器)就帮你找出来递给你。
2. 网页——你看到的“商品展示柜”
网页由HTML、CSS、JavaScript构成。HTML是骨架,CSS是衣服,JavaScript是让商品动起来的电动转盘。
3. Web应用——能互动的“智能柜台”
普通网页只能看,但Web应用能和你互动:登录、搜索、下单、评论……比如淘宝、微博、邮箱。
比喻:普通网页是报纸,只能读;Web应用是手机App,能点、能写、能发。
4. Web应用访问流程——从输入网址到看到页面
- 你输入URL(如
www.baidu.com)。 - DNS解析:把域名翻译成IP地址(就像查电话本找到电话号码)。
- TCP三次握手:浏览器和服务器建立连接(就像打电话前先拨号、等待接通)。
- 发送HTTP请求:浏览器说“我要首页”。
- 服务器返回HTTP响应:服务器把HTML、图片等打包发回。
- 浏览器渲染:把代码变成漂亮的页面。
你敲下回车到页面显示,中间这几步只花了不到一秒。
二、Web服务器漏洞——仓库的“暗门”
黑客不会正面硬刚防火墙,而是寻找Web服务器软件的解析漏洞,上传一个图片格式的木马,然后让它以脚本方式执行。
1. Apache解析漏洞——“文件名骗局”
Apache有个特性:一个文件可以有多个后缀,比如 shell.php.png。如果配置文件里把 .php 设为可执行,那么只要文件名中包含 .php 后缀(不一定是最后一个),就会被当作PHP脚本执行。
攻击示例:上传一个图片文件,名字叫 hack.php.jpg,内容却是PHP木马。Apache解析时发现文件名里有 .php,就会执行里面的代码。
防御:不要信任文件名后缀,用文件内容检测(如检查文件头)。
2. Nginx解析漏洞——“路径魔术”
Nginx在处理路径时,如果看到 /xxx.jpg/.php,会错误地将 .jpg 文件当做PHP脚本解析。
攻击示例:上传一个正常的图片 1.jpg,然后访问 http://target.com/1.jpg/.php,图片里的PHP代码就会被执行。
防御:修改Nginx配置,禁止解析此类路径;或者把上传目录的PHP执行权限关掉。
3. IIS解析漏洞——“分号截断”
IIS 6.0 有个古老漏洞:文件名中的分号 ; 后面的内容会被忽略。比如上传 shell.asp;.jpg,IIS会当成 .asp 脚本执行。
比喻:就像你给快递员看一个箱子,上面写着“衣服;炸弹”,快递员只看到“衣服”就放行了。
防御:升级IIS版本,或者对上传文件名进行严格过滤。
这些漏洞大多出现在老旧版本中,但依然有很多遗留系统存在风险。及时更新软件是最好的防御。
三、Web前端——网页的“骨架、衣服和灵魂”
HTML——骨架
HTML(超文本标记语言)用尖括号标签来定义网页结构。比如:
<h1>我是标题</h1>
<p>我是段落</p>
<img src="cat.jpg" />
<a href="https://baidu.com">点我去百度</a>
比喻:HTML就像盖房子时搭的钢筋水泥框架,决定了哪里是客厅、哪里是卧室。
CSS——衣服
CSS(层叠样式表)控制颜色、字体、布局,让网页变得好看。
h1 { color: red; font-size: 36px; }
p { background-color: yellow; }
比喻:CSS就是给房子刷漆、贴壁纸、铺地板。
JavaScript——灵魂
JavaScript让网页有交互:点击按钮弹出提示、表单验证、动态更新内容等。
document.getElementById("btn").onclick = function() {
alert("你点了我!");
}
比喻:JavaScript就像房子里的智能家居——你一按开关,灯就亮。
安全小知识:黑客可以利用JavaScript注入恶意代码,这就是XSS(跨站脚本攻击)。我们以后会详细讲。
四、Web后端PHP基础安全——服务器里的“魔法厨房”
前端是客人看到的门面,后端才是真正做菜(处理数据)的厨房。PHP是最流行的后端语言之一。
1. GET与POST——两种点菜方式
- GET:参数直接写在URL里,就像你大声喊出你要的菜名,所有人都听得见。
例如:http://store.com/search?keyword=手机
缺点:长度有限,不适合密码、大文件。 - POST:参数放在请求体里,像你小声告诉服务员,别人看不见。
适合登录、上传文件。
安全提示:不要用GET传密码!即使POST,也要用HTTPS加密。
2. PHP文件上传——最危险的“送货口”
网站通常允许用户上传头像、文件。如果后端没有严格检查文件类型和内容,黑客就能上传一个Webshell(网页后门)。
一个最简单的PHP Webshell(一句话木马):
<?php @eval($_POST['cmd']); ?>
攻击者连接这个文件,用POST发送 cmd=system('whoami'); 就能执行系统命令。
两种常见形态:
- eval形态:执行任意PHP代码。
- system形态:执行系统命令(如
ls,whoami,cat /etc/passwd)。
比喻:Webshell就像你在厨房里藏了一个遥控机器人,黑客可以远程控制它,帮你“做菜”(执行命令)或者“砸锅”(破坏系统)。
防御措施:
- 只允许白名单后缀(如
.jpg,.png)。 - 检查文件内容(比如图片文件头
89 50 4E 47才是真的PNG)。 - 将上传目录设置为不可执行脚本。
- 对文件名随机重命名,不让用户控制最终路径。
五、PHP类与对象——图纸和汽车
面向对象编程听起来高深,其实很简单。
- 类(Class):图纸。定义了车有什么属性(颜色、轮子)和方法(加速、刹车)。
- 对象(Object):用图纸造出来的真实汽车。
- 实例化:从图纸到汽车的过程。
class Car {
public $color = "red";
public function run() {
echo "汽车在跑";
}
}
$myCar = new Car(); // 实例化
echo $myCar->color; // 输出 red
$myCar->run(); // 输出 汽车在跑
比喻:类就像蛋糕模具,对象就是做出来的蛋糕。你可以用同一个模具做无数个蛋糕。
六、序列化与反序列化——对象的“快递打包”
什么是序列化?
内存中的对象(比如上面的 $myCar)不方便直接存储或传输。序列化就是把它转成一个字符串:
$str = serialize($myCar);
// 输出类似:O:3:"Car":1:{s:5:"color";s:3:"red";}
什么是反序列化?
把那个字符串再变回对象:
$obj = unserialize($str);
比喻:序列化就像把一辆汽车拆成零件装进纸箱(打包),反序列化就是重新组装成汽车。
反序列化漏洞——拆开“炸弹包裹”
如果用户能控制反序列化的字符串,黑客可以精心构造恶意数据,当 unserialize() 执行时,会自动触发某些魔术方法(如 __wakeup(), __destruct()),从而执行危险操作。
常见魔术方法:
__construct():创建对象时触发。__destruct():销毁对象时触发。__wakeup():反序列化时触发。
攻击示例:黑客构造一个序列化字符串,让反序列化后自动调用 system('rm -rf /')。
防御:
- 永远不要反序列化不可信的数据。
- 使用白名单限制允许反序列化的类。
- 升级PHP版本,许多旧版本的漏洞已被修复。
七、Python与暴力扫描工具——黑客的“自动敲门机”
Python是网络安全领域的“瑞士军刀”,很多扫描工具都用它写。
安装模块:pip install requests
Dirsearch——目录扫描工具(暴力猜网站后台地址):
apt-get install dirsearch
dirsearch -u "http://target.com"
它会自动尝试常见路径,比如 /admin, /backup, /upload,如果服务器返回200,就说明存在该目录。
比喻:Dirsearch就像一个贼,挨家挨户试门把手,看哪家没锁门。
注意:只在自己授权或靶场中使用,乱扫别人的网站是违法的。
八、总结与安全建议
Web世界就像一座繁华的城市:
- HTML/CSS/JS 是建筑的外观和装饰。
- Web服务器 是物流中心。
- 后端语言(PHP) 是处理订单的厨房。
- 序列化/反序列化 是打包拆包的过程。
- Webshell 是藏在地下室的暗门。
作为新人,你应该记住:
- 永远不要相信用户输入——所有GET、POST、上传的文件都要严格过滤。
- 禁用危险函数——如
eval(),system(),exec(),或者限制其使用范围。 - 文件上传必须多重校验——后缀、MIME类型、文件头、内容检测。
- 不要反序列化不可信的数据——用JSON代替序列化,或者使用白名单。
- 保持软件更新——Apache、Nginx、PHP的漏洞几乎每个月都有补丁。
写在最后
今天我们逛了一圈Web世界的“施工现场”:从服务器漏洞到前端三剑客,从PHP上传到序列化炸弹。希望这些比喻能帮你建立起对Web安全的直观认识。知识是铠甲,不是武器,请只在合法环境中练习。
如果你觉得这篇文章对你有帮助,欢迎分享给更多朋友。如果发现任何错误或遗漏,请留言告诉我,我们一起学习、一起进步。下期我们可能会深入具体的Web漏洞(SQL注入、XSS、CSRF)或实战演练。
保持好奇,保持敬畏。我们下次见!
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)