
1) 【一句话结论】在360 Web服务端安全系统中,通过提取HTTP请求的参数、头部、调用链等特征,构建基于统计的孤立森林或深度学习的自编码器模型,利用contamination参数处理数据不平衡,并设计定期重训练机制,有效识别恶意攻击(如SQL注入、DDoS),提升异常检测的准确率与召回率。
2) 【原理/概念讲解】异常检测的核心是识别与正常行为模式偏离的数据。统计方法(如孤立森林)通过“孤立”数据点为树,异常点孤立树短,易检测;深度学习方法(如自编码器)通过学习正常数据的压缩表示,异常数据重构误差大。数据不平衡时,正常样本多,恶意样本少,需通过设置contamination参数(即异常比例)平衡,避免过采样引入噪声。
3) 【对比与适用场景】
| 方法类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 基于统计(孤立森林) | 基于数据分布的异常检测,通过孤立树判断异常 | 计算效率高,适合高维数据,对异常敏感 | Web流量分析(如HTTP请求特征),特征维度高 | 需要特征工程,对异常点数量敏感 |
| 深度学习(自编码器) | 通过神经网络学习正常数据的压缩表示,异常数据重构误差大 | 能捕捉复杂非线性模式,适合时序数据 | 恶意软件行为、API调用链异常,时序特征 | 需要大量数据,训练时间长,过拟合风险 |
4) 【示例】假设Web服务端日志包含请求信息,提取特征:请求URL(如/api/login)、参数(如参数类型、值长度)、请求头(User-Agent、Referer)、请求频率(每秒请求数)、API调用链(调用顺序)。步骤:数据预处理(清洗、归一化),特征工程(将特征转换为向量),训练孤立森林模型(设置contamination=0.001,即恶意比例1%),检测异常。伪代码:
from sklearn.ensemble import IsolationForest
import numpy as np
X = np.array([
[1.0, 0.5, 0.2, 0.1, 0.01], # 正常请求特征
[1.0, 10.0, 5.0, 5.0, 100.0] # 恶意请求(SQL注入,参数异常)
])
model = IsolationForest(contamination=0.001, random_state=42)
model.fit(X)
preds = model.predict(X) # 1为正常,-1为异常
5) 【面试口播版答案】在360的Web服务端安全系统中,我们用机器学习做异常检测。比如,针对Web请求,提取特征如请求URL、参数频率、请求头中的User-Agent,归一化后用孤立森林模型,设置异常比例为0.1%(因为恶意流量占比低)。由于正常流量远多于恶意,我们通过设置contamination参数来平衡数据,模型能识别异常请求。另外,也可用自编码器,学习正常请求的压缩表示,异常请求重构误差大,同样处理数据不平衡。模型定期用新数据重训练,应对新攻击模式,比如SQL注入或DDoS攻击。
6) 【追问清单】
7) 【常见坑/雷区】