SVM算法检测XSS注入

目录

XSS注入检测

GitHub地址: https://github.com/ielcome2017/xss.git

1. 项目结构

 2. 过程

3. 结果

4. 使用


GitHub地址: https://github.com/ielcome2017/xss.git

1. 项目结构


 data 存放所有的数据 
cache
| 中间数据
model 
| 存放训练后的模型 
|——preprocessing 存放预处理模块的结构 
src 
| train 训练和测试 
|——preprocessing 预处理模块 
|——|—— parser.py 正则化清洗数据  

|——|—— load_data.py 读取数据,生成特征空间,并将载荷数据转化成列表

|——|—— vec.py 攻击载荷生成的字符列表生成word2vec


 2. 过程


预处理中,
load_data文件中XssData类
第一步加载原始数据,按照不同类别打上标签。
第二步划分训练集测试集
第三步将训练集中的文本用parser解析后,统计所有词频,提取频率最高的300个作为特征

训练过程,
训练集为两列, 第一列为载荷,第二列为标签,每个载荷解析后为一个列表
第一步将第一列用load_data中的ParseData解析为字符串列表。
第二步将以上解析后的载荷训练word2vec。
第三步将所有解析后的载荷用word2vec转化为向量,其中每一条载荷解析后列表的元素都可以转化为一个向量,将该载荷生成的所有向量相加。

原始数据为,第一列为载荷,第二列为标签:
[['%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 ...]]


3. 结果

              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

 

4. 使用

初始化Detect()类以后,首先train.py中train_predict,然后可以使用main.py。直接将载荷当作参数传入detect.predict 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章