2. Web应用架构与攻击面分析
说实话,做AI安全测试这件事,最怕的不是模型调不好,而是环境先崩了。我见过太多人花了两天装环境,最后发现Python版本冲突,气得想砸电脑。所以这一章,咱们先把地基打牢。
Python虚拟环境——你的隔离沙箱
为什么非要用虚拟环境?说白了,就是防止不同项目之间的依赖打架。我有个血的教训:之前同时做两个项目,一个要TensorFlow 1.x,一个要2.x,结果全局装完,两个都跑不起来。从那以后,我每个项目必开虚拟环境。
核心原则:每个项目独立一套Python解释器和包环境,互不干扰。
创建虚拟环境(我推荐用venv)
# 创建虚拟环境
python -m venv ai_security_env
# 激活环境(Windows)
ai_security_env\Scripts\activate
# 激活环境(Mac/Linux)
source ai_security_env/bin/activate
# 退出环境
deactivate
嗯,这里要注意:激活后你会看到命令行前面多了个 (ai_security_env) 前缀,说明你已经在虚拟环境里了。我个人习惯在项目根目录下建一个 .venv 文件夹,这样一眼就能看到。
主流AI库安装——TensorFlow vs PyTorch
这两个库就像安全界的Burp Suite和OWASP ZAP,各有拥趸。我两边都用,但说实话,做安全测试我更倾向PyTorch——调试起来更直观,动态图方便你随时看中间结果。
安装TensorFlow
# CPU版本(新手推荐)
pip install tensorflow
# GPU版本(需要NVIDIA显卡+CUDA)
pip install tensorflow-gpu
# 验证安装
python -c "import tensorflow as tf; print(tf.__version__)"
我的小技巧:如果你只是做安全测试中的模型推理,CPU版本完全够用。GPU版本装起来容易踩坑,我曾经因为CUDA版本不匹配折腾了一下午。
安装PyTorch
# 去官网选对应版本,这里以CPU版为例
pip install torch torchvision torchaudio
# 验证安装
python -c "import torch; print(torch.__version__)"
你想想看,PyTorch的安装比TensorFlow友好多了。它不需要你手动配CUDA,自动检测硬件。我建议新手直接上PyTorch,少走弯路。
其他必备库
| 库名 | 用途 | 安装命令 |
|---|---|---|
| scikit-learn | 传统机器学习算法 | pip install scikit-learn |
| transformers | HuggingFace预训练模型 | pip install transformers |
| requests | 发送HTTP请求(测试用) | pip install requests |
| beautifulsoup4 | 解析HTML响应 | pip install beautifulsoup4 |
OWASP靶场搭建——你的实战训练场
光说不练假把式。我们需要一个安全的、可控的环境来测试AI模型对Web攻击的检测能力。OWASP提供了几个非常棒的靶场。
方案一:OWASP Juice Shop(我最推荐)
这个靶场模拟了一个电商网站,漏洞覆盖了OWASP Top 10。我每次测试新模型,都会先拿它练手。
# 使用Docker一键部署(前提已安装Docker)
docker pull bkimminich/juice-shop
docker run -d -p 3000:3000 bkimminich/juice-shop
# 访问 http://localhost:3000 即可开始
注意:Docker镜像大概1GB左右,下载需要点时间。我曾经在公司网络下等了半小时,建议提前下载好。
方案二:DVWA(Damn Vulnerable Web Application)
如果你想要更轻量级的靶场,DVWA是个好选择。它专注于SQL注入、XSS等经典漏洞。
# 同样用Docker
docker pull vulnerables/web-dvwa
docker run -d -p 80:80 vulnerables/web-dvwa
# 访问 http://localhost:80
# 默认账号: admin 密码: password
方案三:本地搭建(不用Docker)
有些同学电脑没装Docker,或者公司环境受限。没关系,咱们手动搭一个简单的。
# 1. 安装PHP和MySQL(以Ubuntu为例)
sudo apt install php mysql-server apache2
# 2. 下载DVWA源码
git clone https://github.com/digininja/DVWA.git
cd DVWA
# 3. 复制配置文件
cp config/config.inc.php.dist config/config.inc.php
# 4. 启动服务
sudo systemctl start apache2
sudo systemctl start mysql
嗯,手动搭建确实麻烦点,但你能更清楚每个组件的作用。我个人建议:时间充裕就手动搭一次,以后都用Docker。
验证环境是否就绪
环境搭完别急着跑,先做个快速验证。我一般写个简单的测试脚本:
# test_env.py
import tensorflow as tf
import torch
import requests
print(f"TensorFlow版本: {tf.__version__}")
print(f"PyTorch版本: {torch.__version__}")
# 测试靶场是否可达
try:
r = requests.get("http://localhost:3000", timeout=5)
print(f"Juice Shop状态: {r.status_code}")
except:
print("Juice Shop未启动,请检查Docker容器")
避坑指南:我曾经遇到过TensorFlow和PyTorch同时安装时,protobuf库版本冲突。解决方案是:先装PyTorch,再装TensorFlow,或者用虚拟环境隔离。
总结一下
这一章我们干了三件事:
- 用venv创建了隔离的Python环境
- 安装了TensorFlow和PyTorch两大AI框架
- 搭建了OWASP Juice Shop和DVWA两个靶场