#XSS注入检测
data 存放所有的数据
cache
| 中间数据
model
| 存放训练后的模型
|——preprocessing 存放预处理模块的结构
src
| main 训练和测试
|——preprocessing 预处理模块
|——|—— parser.py 正则化清洗数据
|——|—— load_data.py 读取数据,生成特征空间,并将载荷数据转化成列表
|——|—— vec.py 攻击载荷生成的字符列表生成word2vec
预处理中,
load_data文件中XssData类
第一步加载原始数据,按照不同类别打上标签。
第二步划分训练集测试集
第三步将训练集中的文本用parser解析后,统计所有词频,提取频率最高的300个作为特征
训练过程,
训练集为两列, 第一列为载荷,第二列为标签,每个载荷解析后为一个列表
第一步将第一列用load_data中的ParseData解析为字符串列表。
第二步将以上解析后的载荷训练word2vec。
第三步将所有解析后的载荷用word2vec转化为向量,其中每一条载荷解析后列表的元素都可以转化为一个向量,将该载荷生成的所有向量相加。
第四步SVM训练。
原始数据为,第一列为载荷,第二列为标签:
[['%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e', 1
['COLLCC%3D3442798258%26', 1], ...]
单条数据
解析载荷'%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e',结果为:
['</title>', '<script>', 'alert(', '"xss"', ')', '</script>']
[array([ 1.4576534 , 3.2204003 , -3.0143356 , ...]),
array([ 0.89312494, 0.98994863, -2.2412763, ...]),
array([ 1.4459274 , -1.42252 , 1.8725339 ,...]),
array([-0.13015617, -0.02658045, -1.85561 ,
array([ 0.8952658 , -0.48496005, -0.84033364,
array([ 4.7532024 , 1.5638791 , -0.28219923,
列表各元素按列相加结果为
[9.3150177 3.84016752 -6.36122084 ...]
原始数据最终结果
[[9.3150177 3.84016752 -6.36122084]
[ -0.60598457 -0.0251843 1.80305624 ...]]
precision recall f1-score support
0.0 0.99 1.00 1.00 40026
1.0 1.00 0.97 0.98 8128
accuracy 0.99 48154
macro avg 1.00 0.98 0.99 48154
weighted avg 0.99 0.99 0.99 48154
初始化Detect()类以后,首先train.py中train_predict,然后可以使用main.py
直接将载荷当作参数传入detect.predict