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 

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