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两个靶场