程琪芩,萬 良+
(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還原為 --> 主站蜘蛛池模板: 国产第一色| 亚洲永久精品ww47国产| 国产乱人乱偷精品视频a人人澡| 精品视频在线观看你懂的一区| 久久综合色天堂av| 欧美精品一二三区| 67194亚洲无码| 亚洲精品免费网站| 麻豆精品在线视频| 中文字幕精品一区二区三区视频| 国产在线观看精品| 久久国产香蕉| 成人免费黄色小视频| 国产裸舞福利在线视频合集| 日本三级欧美三级| 熟妇丰满人妻av无码区| 国产在线小视频| 国产综合精品日本亚洲777| 亚洲国产日韩一区| 天天综合网色中文字幕| 欧美日韩精品在线播放| 91美女视频在线| 国产情侣一区| 99热这里只有精品在线播放| 国产91在线|中文| av一区二区人妻无码| 国产女人在线| 亚洲人成在线精品| 国产成人精品一区二区免费看京| 亚洲成人动漫在线观看| 成人免费一区二区三区| AV在线天堂进入| 国产成本人片免费a∨短片| 国产视频自拍一区| 国内精品久久九九国产精品 | 18禁高潮出水呻吟娇喘蜜芽| 国产菊爆视频在线观看| 成人亚洲视频| 国产精品久久精品| 日韩美一区二区| 国产免费人成视频网| 国产乱码精品一区二区三区中文 | 又爽又黄又无遮挡网站| 亚洲,国产,日韩,综合一区| 久久天天躁狠狠躁夜夜躁| 亚洲视屏在线观看| 成年看免费观看视频拍拍| 国产91精品久久| 欧美一级在线播放| 久久婷婷色综合老司机| 91国内在线观看| 99久久精品国产自免费| 久久人人妻人人爽人人卡片av| 亚洲欧美日本国产综合在线| 日韩高清在线观看不卡一区二区| 99福利视频导航| 国产精品无码翘臀在线看纯欲| 日韩欧美国产三级| 日韩精品亚洲人旧成在线| 亚洲天堂视频在线观看| 99尹人香蕉国产免费天天拍| 日韩第九页| 亚洲精品无码抽插日韩| 日本亚洲成高清一区二区三区| 久久青草免费91线频观看不卡| 国产18页| 超清无码熟妇人妻AV在线绿巨人| 欧美日韩一区二区在线播放| 91无码网站| 欧美精品三级在线| 久久情精品国产品免费| 国产69囗曝护士吞精在线视频| 四虎精品国产永久在线观看| 欧美三级视频网站| 色综合久久无码网| 91九色国产porny| 97久久人人超碰国产精品| 久久窝窝国产精品午夜看片| 真实国产乱子伦高清| 日韩亚洲高清一区二区| 成人午夜免费观看| 亚洲日韩精品无码专区|