程琪芩,萬 良+
(1.貴州大學 計算機科學與技術學院,貴州 貴陽 550025;2.貴州大學 計算機軟件與理論研究所,貴州 貴陽 550025)
跨站腳本(cross-site script,XSS)攻擊最早出現在20世紀90年代的萬維網上,是一種攻擊者將惡意腳本注入web網頁的注入攻擊[1]。黑客利用XSS漏洞盜取用戶Cookie,從而得到用戶的身份權限,給用戶帶來不便甚至造成巨大損失[2]。因此,檢測XSS攻擊、提高web安全成為當今網絡安全領域不懈的追求。傳統的檢測技術有模糊測試技術[3]、黑盒技術[4]、輸入驗證技術[5]等,后來又提出了基于機器學習[6-8]的檢測技術。但是,隨著XSS攻擊形式越來越多變,攻擊特征也更加難以捕捉,現有的檢測方法性能有限[9]。為了更全面地獲取XSS特征,加快模型的收斂速度,提高檢測性能,本文將編碼-解碼(Encoder-Decoder)框架應用到XSS檢測中,將XSS檢測視為自然語言序列問題,由卷積神經網絡(convolutional neural network,CNN)和雙向門控循環單元(bidirectional gated recurrent unit,BiGRU)并行組成Encoder,并運用注意力機制解決該框架的“分心問題”。實驗驗證,應用注意力機制改進Encoder-Decoder框架下的XSS檢測模型具有良好的性能,且相對于串行結構,并行結構的CNN和BiGRU具有更好的特征提取能力。
傳統機器學習方法的人工提取特征具有主觀性強、工作量大、特征提取不夠充分等問題,而具備自動學習能力的深度學習能很好的解決這個問題,一些專家學者將其應用到XSS檢測中,并提出了不同的檢測方法。Guichang Z等[10]提出了一種命名為CNNPayl的XSS攻擊檢測方法,該方法先利用高斯混合模型和代碼混淆策略得到攻擊數據集,再構建多層CNN模型學習和提取攻擊特征,得到了較高檢測率和較低假陽性的檢測效果,但是該方法忽略了XSS上下文的語義信息。Fang Y等[11]提出了一種命名為DeepXSS的XSS檢測方法,該方法運用長短時記憶網絡(long-short term memory,LSTM)檢測XSS,并取得了較好的預測效果。Wu F等[12]提出了一種結合CNN和LSTM的CNN-LSTM檢測模型,該方法驗證了組合神經網絡的效果優于單一網絡。
在上述文獻研究的基礎上,本文構建了一種應用注意力機制改進Encoder-Decoder框架下的跨站腳本檢測模型。Encoder-Decoder[13]是深度學習中一個非常常見的模型框架,常用于圖像識別和機器翻譯等領域,采用CNN、循環神經網絡(recurrent neural network,RNN)、LSTM等網絡自由搭配,解決多個領域的問題。CNN[14]是一種前饋神經網絡,常用于圖像處理、自然語言處理等。CNN通過若干次卷積、池化,不斷提取和壓縮特征,最終學習到高層次特征。門控循環單元網絡[15](gated recurrent unit,GRU)為LSTM的一個變種,它將LSTM的遺忘門和輸入門合成為重置門,用于捕獲序列問題中的短期依賴,并設置了更新門,用于捕獲序列問題中的長期依賴。GRU結構比LSTM簡單,參數更少,訓練收斂速度更快。借鑒雙向循環神經網絡(bidirectional recurrent neural network,BiRNN)雙向處理序列的特點,選擇BiGRU學習XSS上下文信息。本文組合這兩種神經網絡,取其優勢,進行XSS檢測。模型中Encoder采用CNN和BiGRU并行結構的方式,讓CNN去逐層學習XSS的更高層次特征,讓BiGRU去學習XSS序列間的信息依賴和上下文信息,結合兩者學習到的特征,完成編碼,再利用注意力機制選擇關注編碼后的特征中與XSS顯著相關的重要特征,從而更好實現分類。
為了有效檢測XSS、提高web網頁安全,本文提出了一種應用注意力機制改進Encoder-Decoder框架下的跨站腳本檢測模型,模型結構自下而上如圖1所示,采用序列問題中常用的Encoder-Decoder框架,并運用注意力機制提取Encoder序列中與輸出顯著相關的信息。模型主要分為4個階段:Encoder階段、注意力機制階段、Decoder階段、分類預測。實驗中,樣例數據經過數據預處理后,已經為50×128維詞向量矩陣word embedding,因此模型不再需要使用embedding層,直接使用input層實例化神經網絡的輸入,再進行后面的操作。

圖1 模型結構
在深度學習中,常用Encoder將輸入序列編碼形成中間表示形式。本文將CNN和BiGRU并行作為Encoder,結合CNN學習到的22×128維特征和BiGRU學習到的50×128維特征,作為編碼后的72×128維中間表示特征。
2.1.1 CNN
一維卷積(Convolution1D,Conv1D)是一維卷積操作,常用于自然語言處理,它的輸入為三維數據向量,本文選擇其作為模型的卷積層。最大池化(max-pooling)能減少卷積層參數造成的估計均值誤差,本文選擇其作為模型的池化層。
模型的CNN階段包含兩個Conv1D層和一個max-pooling層。兩個Conv1D層選擇了128個卷積核為4×4的卷積操作(如式(1)所示),然后使用非線性激活函數對卷積操作的輸出結果做一次非線性映射,增強模型的非線性表達能力
(1)

常用的非線性激活函數中,relu函數(如式(2)所示)迭代速度較快,因此本文選擇其為卷積層的激活函數

(2)
經過第一層卷積操作和非線性映射后,得到了一個特征映射,再將其作為第二個卷積層的輸入,經過第二個卷積操作和非線性映射后,得到該層的特征映射。經過兩層卷積后,將特征輸入到池化層進行池化操作,對經過非線性映射的特征進行采樣處理。max-pooling層選擇值為2的池化步長,對特征映射取最大值,提取最有效的特征信息,降低特征維度。
CNN階段通過逐層卷積或者池化,學習高層次的特征,作為Encoder編碼結果的一部分。CNN學習過程如下:
步驟1 初始化卷積層的卷積核大小、卷積核數量,初始化池化層的池化步長;
步驟2 將每條樣例數據x輸入第一個卷積層;
步驟3 對其進行卷積操作,再經過非線性激活函數relu(x)進行非線性映射,輸出47×128維的特征映射x1;
步驟4 將步驟3卷積出來的特征映射x1輸入第二個卷積層;
步驟5 以相同的方式進行卷積和非線性映射,輸出44×128維的特征映射x2;
步驟6 將步驟5輸出的特征映射x2輸入池化層;
步驟7 池化下采樣,輸出CNN訓練得到的22×128維特征。
2.1.2 BiGRU


圖2 GRU結構
重置門rt和更新門zt均以Sigmoid函數作為激活函數,zt計算前一狀態傳遞到當前狀態的信息量,如式(3)所示,其中wz為更新門zt的權值矩陣,bz為zt的偏置向量,σ(x)為Sigmoid激活函數。zt值越大,前一狀態傳遞到當前狀態的信息越多。和LSTM必須考慮上一狀態對當前狀態的影響不同,GRU通過重置門選擇是否保留上一狀態的隱藏輸出,若zt為0,則丟棄上一狀態的隱藏輸出,若為1,則保留上一狀態的隱藏輸出
zt=σ(wz·[ht-1,xt]+bz)
(3)

rt=σ(wr·[ht-1,xt]+br)
(4)
(5)
(6)
BiGRU階段通過前向GRU層學習上文與下文的關系信息,通過反向GRU層學習下文對上文的關系信息,最后得到XSS的上下文信息特征,作為Encoder編碼結果的一部分。BiGRU學習過程如下:

步驟2 將每個樣例數據x輸入BiGRU的前向層;


步驟5 將每個樣例數據x輸入BiGRU的反向層;



本文引入注意力機制[16]來學習抽取特征中與XSS相關性高的信息,提高模型的檢測性能,加快模型的收斂速度。注意力機制主要是借鑒人類的視覺系統,讓模型忽略與XSS相關性不高甚至沒有關系的部分特征,選擇關注與XSS密切相關的部分特征,從而進行更高效的學習。本文將CNN和BiGRU同時作為注意力模型的編碼器,以GRU作為解碼器,經過編碼器編碼以后,計算每個輸入對于當前輸出的注意力矩陣,再利用解碼器解碼,得到分類結果。注意力機制的結構如圖3所示。

圖3 注意力機制結構
其中xi(1≤i≤n) 表示輸入向量,hi(1≤i≤n) 表示經過CNN階段和BiGRU階段編碼得到的隱藏輸出,Hi(1≤i≤m) 表示經過GRU解碼得到的隱藏輸出。 F(Ht-1,h1∶t) 計算輸入數據h1∶t對當前輸出Yt的注意力分布情況(如式(7)所示),然后應用softmax函數將其轉換為對應的注意力分配權值(如式(8)所示),再與輸入加權求和(如式(9)所示),就得到了注意力矩陣,突顯出與當前輸出密切相關的特征。將注意力矩陣作為解碼器的部分輸入,從而得到當前隱藏輸出
etj=relu(tanh(wF·[Ht-1,hj]+bF))
(7)
其中,wF為注意力機制權值矩陣,bF為偏置向量,relu(x)和tanh(x)均為激活函數,etj表示第j個輸入hj對第t個輸出Yt的注意力分布情況
atj=softmax(etj)
(8)
其中,atj表示第j個輸入對第t個輸出的注意力權重,softmax(x)表示激活函數,使atj∈(0,1),atj趨近于0表示相關性不高,趨近1表示相關性高
(9)
其中,ct表示輸入對第t個輸出的注意力矩陣,將每個輸入和其與當前輸出的注意力權重以點乘的方式進行計算,完成對輸入序列的不同局部賦予不同的權重,得到其重要性分布。
注意力機制階段通過計算輸入數據中對每個輸出的注意力特征向量,使模型只關注與XSS顯著相關的部分信息。注意力機制學習過程如下:
步驟1 初始化注意力機制各層的神經元個數、權值、偏置等;
步驟2 將編碼后的72×128維中間表示特征輸入注意力機制的隱藏層;
步驟3 將中間表示特征輸入到激活函數為tanh(x)的隱藏層和激活函數為relu(x)的隱藏層對應神經元,計算獲得目標輸出Yi和每個輸入特征對應的注意力分布情況;
步驟4 再將步驟2得到的注意力分布情況輸入softmax層,歸一化處理,輸出注意力分配權重;
步驟5 最后經過Dot層,輸出輸入特征對應目標輸出Yi的2×128維高相關性特征;
步驟6 重復步驟2到步驟5,直到計算出輸入特征對應每個目標輸出的高相關性特征。
在Encoder-Decoder框架中,Encoder對輸入數據進行編碼,得到中間語義表示向量,Decoder對中間語義表示向量和之前已經生成的歷史信息來生成i時刻的解碼輸出。本文模型中,由于GRU具備記憶歷史信息的功能,避免了RNN的梯度消失,選擇其作為Decoder。Decoder學習過程如下:
步驟1 初始化GRU的權值、偏置、初始輸出Y0;
步驟2 將經過注意力機制得到的每個高相關性特征輸入Decoder,得到對應的128維解碼輸出。
在經過Encoder-Decoder框架學習后,得到了一組與XSS重要相關的特征,使用softmax分類器對其進行分類預測,得到模型預測的結果。
在訓練模型時,根據預測結果和實際標簽的誤差反向傳播,通過梯度下降算法對模型各層的權值和偏置進行更新,直至模型參數達到最優。
實驗使用的計算機配置為:windows10操作系統、Intel(R) Core(TM)i7-9750H CPU @2.60 GHz 2.60 GHz、8 G 內存,實驗環境為python3.5.2、Tensorflow1.12.0、Keras2.2.4。實驗中,使用網絡爬蟲從網站上爬取數據樣例,惡意樣例來源于XSSed數據庫,正常樣例來源于DMOZ數據庫,經過數據預處理后,最終得到了20 000個惡意樣例和20 000個正常樣例,將其按照7∶3的比例,運用交叉驗證中的train_test_split函數隨機選取構成訓練集和測試集,數據集分布情況見表1。

表1 數據集分布
在自然語言處理中,數據以向量的形式作為神經網絡的輸入,同時XSS代碼常常以編碼混淆的方式降低代碼的可讀性,以此躲避檢測,因此對樣本數據進行預處理,轉換為神經網絡輸入需要的向量形式。
(1)數值化
由于XSS代碼常用URL編碼、Unicode編碼等方式降低代碼的可讀性,本文通過解碼技術還原代碼,如%3Cscript%3Ealert%28%27Xss%20By%20Atm0n3r%27%29%3C/script%3E還原為 --> 主站蜘蛛池模板: 成人精品视频一区二区在线 | 91精品国产无线乱码在线| 亚洲综合亚洲国产尤物| 久久一日本道色综合久久| 夜夜高潮夜夜爽国产伦精品| 在线观看国产精美视频| 欧美视频在线播放观看免费福利资源 | 欧美爱爱网| 二级特黄绝大片免费视频大片| 国产在线拍偷自揄观看视频网站| 在线观看精品国产入口| 婷婷色中文| 免费看的一级毛片| 国产精品lululu在线观看| 久久国产精品影院| 亚洲精品欧美日韩在线| 人妻21p大胆| 任我操在线视频| 日韩在线1| 色综合a怡红院怡红院首页| 精品一区国产精品| 国产精品亚洲日韩AⅤ在线观看| 91精品国产丝袜| 久久香蕉国产线看精品| 狠狠色香婷婷久久亚洲精品| 91香蕉视频下载网站| 米奇精品一区二区三区| 五月天香蕉视频国产亚| 喷潮白浆直流在线播放| 99九九成人免费视频精品 | 免费视频在线2021入口| 国产在线一二三区| 国产成人亚洲日韩欧美电影| 欧美日本在线播放| 人与鲁专区| 99久久精品免费看国产电影| 国产高清在线丝袜精品一区| 国产第八页| 99免费在线观看视频| 亚洲欧美一区二区三区麻豆| 国产精品v欧美| 在线看免费无码av天堂的| 日韩精品亚洲人旧成在线| 9啪在线视频| 一级一级一片免费| 久久香蕉国产线看观看亚洲片| 国产一级二级在线观看| 亚洲第一区欧美国产综合| 狠狠做深爱婷婷久久一区| 九色在线观看视频| 久久综合结合久久狠狠狠97色| 一级毛片不卡片免费观看| 国产激情第一页| 国产大全韩国亚洲一区二区三区| 国产三级毛片| 婷婷亚洲视频| 免费AV在线播放观看18禁强制| 亚洲国语自产一区第二页| 国产va在线观看| 91午夜福利在线观看精品| 欧美日韩激情在线| 国产精品永久在线| 99热这里只有精品久久免费| 91蝌蚪视频在线观看| 永久免费AⅤ无码网站在线观看| 亚洲中文字幕久久无码精品A| 精品91在线| 亚洲无码一区在线观看| 日本不卡在线播放| 国产亚洲视频播放9000| 五月婷婷亚洲综合| 色妞www精品视频一级下载| 伊伊人成亚洲综合人网7777| 91色综合综合热五月激情| 亚洲手机在线| 无码久看视频| 国产第一页屁屁影院| 青青草国产免费国产| 国产免费a级片| www.91在线播放| 91精品免费高清在线| 亚洲三级影院|