目录
选题意义背景
随着互联网技术的迅猛发展,Web应用已成为人们日常生活和工作中不可或缺的重要组成部分,全球Web应用数量呈现爆发式增长,各类Web服务在电子商务、在线教育、远程医疗等领域发挥着越来越重要的作用。传统的恶意HTTP请求检测方法主要基于规则匹配和黑名单机制,这些方法虽然实现简单,但存在着明显的局限性。
机器学习和深度学习技术的发展为恶意HTTP请求检测提供了新的思路和方法。与传统方法相比,基于机器学习的检测方法具有自学习能力,可以从大量数据中自动学习攻击特征,无需人工定义规则;同时,这些方法能够有效检测未知攻击,具有更好的泛化能力。 然而HTTP请求数据的特征表示方法直接影响检测模型的性能,如何有效提取HTTP请求中的关键特征是一个重要问题;不同类型的机器学习模型在检测效果上各有优劣,单一模型难以应对复杂多变的攻击场景;如何提高模型对未知攻击的检测能力,增强系统的泛化性能也是研究的重点方向。

本研究旨在针对上述问题,深入探索基于机器学习的恶意HTTP请求检测方法,提出改进的特征表示方法和检测模型,提高检测系统的准确性和泛化能力,从HTTP请求的数据提取与特征表示入手,研究基于统计特征、权重向量和词嵌入矩阵的特征表示方法,实现对恶意HTTP请求的高效准确检测。
数据集
数据获取
HTTP DATASET CSIC 2010是由西班牙计算机科学研究所创建的一个标准数据集,该数据集是在一个真实的Web应用程序上自动收集的。研究人员通过模拟正常用户行为和各种攻击行为,生成了包含正常请求和恶意请求的混合数据集。我们通过CSIC官方网站和学术资源平台获取了该数据集的完整版本,确保了实验数据的可靠性和完整性。
HTTP DATASET CSIC 2010数据集以文本文件格式存储,每条记录代表一个HTTP请求,包含完整的HTTP请求头和请求体信息。该数据集的规模较大,总共包含约61,000个正常请求和超过25,000个恶意请求。这些恶意请求涵盖了SQL注入、缓冲区溢出、信息收集、文件披露、XSS、服务器端包含、参数篡改等多种常见的Web攻击类型,为模型训练和测试提供了丰富的样本。
数据类别定义
在本研究中,我们将HTTP请求主要分为两大类:正常请求和恶意请求。其中,恶意请求又进一步细分为多种具体的攻击类型,主要包括:
-
SQL注入攻击:通过在HTTP请求中插入恶意SQL代码,试图操纵数据库服务器执行非预期的操作,如数据泄露、数据篡改甚至服务器控制权获取。
-
跨站脚本攻击(XSS):在HTTP请求中注入恶意脚本代码,当其他用户浏览包含该代码的页面时,脚本会在用户浏览器中执行,可能导致会话劫持、数据窃取等安全问题。
-
操作系统命令注入攻击(OS_COMMAND):通过在HTTP请求中插入操作系统命令,试图让服务器执行这些命令,从而获取服务器的访问权限或执行恶意操作。
-
文件包含攻击(LFI/RFI):利用Web应用中的文件包含功能,通过在HTTP请求中指定本地或远程文件路径,试图访问服务器上的敏感文件或执行恶意代码。
为了确保模型训练的有效性和评估的客观性,我们采用了标准的数据集分割方法,将数据集分为训练集、验证集和测试集三个部分。
功能模块介绍
本研究的恶意HTTP请求检测系统主要由以下几个核心功能模块组成,各模块协同工作,共同完成从数据预处理到最终检测的全过程。
数据采集与预处理
数据采集与预处理模块是整个系统的基础,负责从各种来源获取HTTP请求数据,并将其转换为适合后续处理的格式。该模块的主要功能包括:
-
数据采集功能:支持从Web服务器日志、网络流量捕获工具或公开数据集中获取HTTP请求数据。系统设计了灵活的数据接口,可以根据不同的数据源格式进行适配。
-
数据清洗功能:对采集到的原始数据进行清洗,去除无效请求、格式错误的记录以及重复数据,确保后续处理的数据质量。
-
数据标准化功能:将不同来源的HTTP请求数据统一转换为标准格式,包括URL解码、字符小写化等操作,消除数据格式差异带来的影响。
-
特征提取功能:根据不同的特征表示方法,从HTTP请求中提取相应的特征。对于统计特征,计算请求长度、参数个数等统计指标;对于文本特征,进行分词和序列处理。
该模块的实现过程中,我们采用了模块化设计,将不同的预处理操作封装为独立的函数,便于后续的维护和扩展。同时,为了提高处理效率,对于大规模数据的预处理,我们实现了并行处理机制,可以充分利用多核CPU资源加速处理过程。
特征表示模块
特征表示模块负责将预处理后的HTTP请求数据转换为机器学习模型可以处理的数值特征。该模块实现了三种特征表示方法,分别针对不同的应用场景和检测需求:
-
统计特征表示子模块:提取HTTP请求的各种统计特征,如请求长度、URL长度、参数长度、特殊字符数量等,首先定义了21种统计特征的计算方法,然后使用基于决策树的特征选择算法对这些特征进行重要性评估,最后保留重要程度最高的13个特征作为最终的统计特征表示,通过分析不同统计特征对区分正常请求和恶意请求的贡献程度,去除冗余特征,提高模型的训练效率和检测性能

-
权重向量表示子模块:使用TF-IDF算法计算HTTP请求中每个词的权重,生成权重向量,首先构建训练集的词库,然后计算每个词的词频(TF)和逆文档频率(IDF),最后计算词的权重并生成权重向量,通过分析词在文档中的重要性,赋予不同的权重,突出恶意请求中的特征词,提出了针对恶意请求关键词的改进权重计算方法,将恶意请求中常见而正常请求中不常见的关键词转换为同一个词来计算权重,增强恶意特征的表达

-
词嵌入矩阵表示子模块:使用Word2Vec算法将HTTP请求转换为词嵌入矩阵,通过学习词的分布式表示,捕捉词之间的语义关系,更好地表示HTTP请求中的语义信息,对于未登录词,使用均匀分布的随机向量表示,并对序列进行截断或补长,确保输入维度一致

特征表示模块的设计充分考虑了不同特征表示方法的优缺点,为后续的检测模型提供了多样化的特征输入,增强了系统的检测能力和适应性。
检测模型模块
检测模型模块是整个系统的核心,负责根据输入的特征表示对HTTP请求进行分类,判断其是否为恶意请求。该模块实现了多种检测模型,并提出了两种创新的模型架构:
-
传统机器学习模型子模块:实现逻辑回归(LR)、支持向量机(SVM)、K近邻(KNN)、决策树(DT)和随机森林(RF)等传统机器学习算法,使用预处理后的特征表示作为输入,训练各算法模型,并在验证集上进行参数调优,选择最佳模型参数,通过对比不同传统机器学习算法的检测效果,选择最适合恶意HTTP请求检测的算法
-
Bi-LSTM-AP模型子模块:实现结合注意力机制和池化方法的双向长短期记忆网络模型,构建Bi-LSTM网络,分别从正向和反向处理词嵌入矩阵,捕捉双向的语义依赖,实现基于注意力机制的特征提取方法(Bi-LSTM-A),为不同时间步的输出赋予权重,实现基于最大池化的特征提取方法(Bi-LSTM-P),提取重要特征,融合两种特征提取方法的结果,构建Bi-LSTM-AP模型。通过结合注意力机制和最大池化方法,既保留全面的语义信息,又突出重要特征,提高检测效果
检测模型模块的实现充分利用了机器学习和深度学习的最新研究成果,并针对恶意HTTP请求检测的特点进行了创新,提出了更有效的模型架构和融合策略。
算法理论
特征选择算法
特征选择是机器学习中的重要步骤,其目的是从原始特征集中选择出最具代表性的特征子集,以提高模型的训练效率和泛化能力。本研究中,我们使用基于决策树的特征选择方法,该方法通过计算每个特征的重要程度,选择重要程度最高的特征。决策树是一种基于树结构的分类算法,它通过递归地将数据集划分为子集,每个划分基于某个特征的取值。在决策树构建过程中,每个特征的重要程度可以通过基尼系数来度量。

TF-IDF权重计算算法
TF-IDF 是一种用于评估词对文档集合中一份文档的重要程度的统计方法。在恶意HTTP请求检测中,我们使用TF-IDF算法计算HTTP请求中每个词的权重,生成权重向量作为特征表示。TF-IDF的核心思想是:如果一个词在一篇文档中出现的频率高,而在其他文档中出现的频率低,则认为这个词对该文档的区分能力强,应该赋予较高的权重。

针对恶意HTTP请求检测的特点,我们提出了一种改进的TF-IDF权重计算方法。该方法首先统计正常请求和恶意请求中出现频率最高的词,然后将在恶意请求中频繁出现而在正常请求中很少出现的关键词转换为同一个词来计算权重。这样可以使恶意请求中的恶意信息更加明显,提高模型对恶意请求的检测能力。
Word2Vec词嵌入算法
Word2Vec是一种用于生成词向量的神经网络模型,它可以将词转换为低维实数向量,捕捉词之间的语义关系。在本研究中,我们使用Word2Vec算法中的CBOW 模型来生成HTTP请求的词嵌入表示。CBOW模型的主要思想是通过上下文来预测中心词。模型结构包括输入层、隐藏层和输出层:
-
输入层:将中心词周围的C个上下文词转换为one-hot向量形式。
-
隐藏层:通过权重矩阵将输入的one-hot向量映射为低维向量,并对这些向量进行平均。
-
输出层:通过softmax函数将隐藏层的输出转换为词表中每个词的概率分布,预测中心词。

在训练过程中,CBOW模型通过最小化预测词和实际词之间的误差来更新权重矩阵。训练完成后,输入层到隐藏层的权重矩阵可以作为词嵌入矩阵,矩阵中的每一行对应一个词的词向量。使用Word2Vec生成HTTP请求的词嵌入表示的具体步骤如下:
-
对HTTP请求进行分词处理,将请求转换为词序列。
-
使用CBOW模型训练词嵌入,设置适当的参数,如词向量维度、上下文窗口大小等。
-
将HTTP请求中的每个词映射为对应的词向量,形成词嵌入序列。
-
对词嵌入序列进行截断或补长操作,确保所有请求的词嵌入序列长度一致。
通过Word2Vec算法,我们可以将HTTP请求转换为包含语义信息的词嵌入矩阵,为后续的深度学习模型提供更丰富的特征表示。
双向长短期记忆网络
长短期记忆网络(LSTM)是一种特殊的循环神经网络(RNN),它通过门控机制有效解决了RNN在处理长序列时遇到的梯度消失问题。双向长短期记忆网络(Bi-LSTM)是LSTM的扩展,它由前向LSTM和后向LSTM组成,可以同时捕捉序列的正向和反向信息。

Bi-LSTM将序列分别输入到前向LSTM和后向LSTM中,然后将两个LSTM的输出拼接起来,形成最终的输出。 通过Bi-LSTM,我们可以同时捕捉HTTP请求中词与词之间的正向和反向依赖关系,更好地理解请求的语义信息,提高检测模型的性能。
注意力机制
注意力机制是一种模拟人类注意力分配的机制,它可以根据输入的重要性自动分配权重,重点关注重要的信息。在本研究中,我们将注意力机制应用于Bi-LSTM网络的输出处理,提出了Bi-LSTM-A模型。通过注意力机制,Bi-LSTM-A模型可以自动识别Bi-LSTM输出中重要的时间步,为其分配更高的权重,从而更好地捕捉HTTP请求中的关键信息,提高检测效果。
池化是一种降维操作,它通过对输入数据进行局部聚合,提取重要特征,同时减少数据维度。在本研究中,我们使用最大池化操作处理Bi-LSTM网络的输出,提出了Bi-LSTM-P模型。最大池化的主要思想是在输入数据的局部区域中选择最大值作为输出。 通过最大池化,Bi-LSTM-P模型可以从Bi-LSTM的输出中提取最显著的特征,这些特征通常对区分正常请求和恶意请求具有重要意义。最大池化操作可以有效减少噪声的影响,提高模型的鲁棒性。

混合模型融合策略
混合模型是通过融合多个基础模型的预测结果来提高整体预测性能的方法。在本研究中,我们提出了一种基于加权求和的混合模型融合策略,将基于权重向量的随机森林模型和基于词嵌入矩阵的Bi-LSTM-AP模型的检测结果进行融合,混合模型的融合过程如下:
-
分别训练基础模型,并在验证集上评估其性能。
-
设计融合权重w1和w2,满足w1 + w2 = 1。
-
对于未知的HTTP请求,分别使用两个基础模型进行预测,得到预测结果M和D。
-
计算混合模型的最终预测结果:Result = w1 * M + w2 * D。
-
在验证集上搜索最佳的融合权重,使混合模型达到最优性能。
通过实验,我们确定当融合权重为0.3:0.7(随机森林:Bi-LSTM-AP)时,混合模型的检测性能最佳。这种融合策略充分利用了两个基础模型的优势,随机森林模型对恶意请求的检测能力较强,而Bi-LSTM-AP模型对正常请求的检测能力较强,两者融合后可以得到更好的整体检测效果。
核心代码
改进的TF-IDF权重计算
针对恶意HTTP请求的改进TF-IDF权重计算方法,通过将恶意请求中常见而正常请求中不常见的关键词转换为同一个词来计算权重,从而使恶意请求中的恶意信息更加明显。
def improved_tfidf_calculation(train_data, malicious_keywords):
"""
改进的TF-IDF权重计算方法
参数:
train_data: 训练数据,包含正常请求和恶意请求
malicious_keywords: 恶意请求中常见而正常请求中不常见的关键词列表
返回:
tfidf_vectorizer: 训练好的TF-IDF向量化器
feature_names: 特征名称列表
"""
# 1. 预处理数据:将恶意关键词转换为同一个词
processed_data = []
for request in train_data:
# 将恶意关键词替换为统一标记
processed_request = request
for keyword in malicious_keywords:
processed_request = processed_request.replace(keyword, "MALICIOUS_TOKEN")
processed_data.append(processed_request)
# 2. 初始化TF-IDF向量化器
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer(max_features=5000, lowercase=True)
# 3. 训练TF-IDF模型
tfidf_vectorizer.fit(processed_data)
# 4. 获取特征名称
feature_names = tfidf_vectorizer.get_feature_names_out()
return tfidf_vectorizer, feature_names
这段代码的核心思想是在计算TF-IDF权重之前,对训练数据进行预处理,将恶意请求中常见的关键词(如’script’、‘select’、‘waitfor’等)转换为一个统一的标记’MALICIOUS_TOKEN’。这样做的好处是:首先,增加了这个统一标记的词频(TF值),因为多个恶意关键词都被转换为同一个词;其次,由于这些关键词主要出现在恶意请求中,所以统一标记的逆文档频率(IDF值)不会显著下降。通过这种方式,恶意请求的权重向量中恶意信息的特征会更加明显,从而提高模型对恶意请求的检测能力。
实验结果表明,使用改进的TF-IDF权重计算方法后,随机森林模型对恶意请求的检测能力(Recall)从97.32%提高到了98.28%,而对正常请求的检测能力(DRN)仅从99.84%下降到99.06%,整体检测准确率保持在较高水平。
Bi-LSTM-AP模型
结合注意力机制和最大池化方法的Bi-LSTM-AP模型,该模型通过从Bi-LSTM网络的输出中提取更加全面和重要的特征,提高了恶意HTTP请求的检测效果。
import tensorflow as tf
from tensorflow.keras.layers import Input, Embedding, Bidirectional, LSTM, Dense, Lambda, Concatenate
from tensorflow.keras.models import Model
import numpy as np
def build_bilstm_ap_model(vocab_size, embedding_dim, max_length, lstm_units=32):
"""
构建Bi-LSTM-AP模型
参数:
vocab_size: 词汇表大小
embedding_dim: 词嵌入维度
max_length: 序列最大长度
lstm_units: LSTM单元数量
返回:
model: 构建好的Bi-LSTM-AP模型
"""
# 1. 输入层
inputs = Input(shape=(max_length,))
# 2. 词嵌入层
embedding_layer = Embedding(input_dim=vocab_size, output_dim=embedding_dim,
input_length=max_length, trainable=True)(inputs)
# 3. Bi-LSTM层
bilstm_output = Bidirectional(LSTM(units=lstm_units, return_sequences=True))(embedding_layer)
# 4. 注意力机制部分 (Bi-LSTM-A)
# 计算注意力权重
attention_weights = Dense(1, activation='tanh')(bilstm_output)
attention_weights = tf.keras.layers.Flatten()(attention_weights)
attention_weights = tf.keras.layers.Activation('softmax')(attention_weights)
attention_weights = tf.keras.layers.RepeatVector(lstm_units * 2)(attention_weights)
attention_weights = tf.keras.layers.Permute([2, 1])(attention_weights)
# 加权求和
attention_output = tf.keras.layers.Multiply()([bilstm_output, attention_weights])
attention_output = tf.keras.layers.Lambda(lambda x: tf.reduce_sum(x, axis=1))(attention_output)
# 5. 最大池化部分 (Bi-LSTM-P)
max_pool_output = tf.keras.layers.GlobalMaxPooling1D()(bilstm_output)
# 6. 融合注意力机制和最大池化的结果
# 可学习的融合权重
w1 = tf.Variable(0.5, trainable=True)
w2 = tf.Variable(0.5, trainable=True)
# 加权融合
fused_output = w1 * attention_output + w2 * max_pool_output
# 7. 全连接层和输出层
dense1 = Dense(128, activation='relu')(fused_output)
dense2 = Dense(64, activation='relu')(dense1)
outputs = Dense(1, activation='sigmoid')(dense2)
# 8. 构建模型
model = Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.0001),
loss='binary_crossentropy',
metrics=['accuracy'])
return model
这段代码实现了Bi-LSTM-AP模型的完整结构,包括以下几个关键部分:
-
输入层和词嵌入层:将输入的词索引序列转换为低维实数向量表示。
-
Bi-LSTM层:使用双向LSTM网络处理词嵌入序列,分别从正向和反向捕捉序列的语义信息。
-
注意力机制部分:计算每个时间步输出的注意力权重,并使用权重对输出进行加权求和,重点关注重要的时间步。
-
最大池化部分:使用全局最大池化操作提取Bi-LSTM输出中最显著的特征。
-
融合机制:通过可学习的权重w1和w2,融合注意力机制和最大池化的结果,使模型能够同时利用全面的语义信息和显著的特征。
-
全连接层和输出层:将融合后的特征映射到最终的分类结果。
Bi-LSTM-AP模型的创新之处在于它结合了注意力机制和最大池化两种特征提取方法的优势。注意力机制可以保留全面的语义信息,而最大池化可以突出显著的特征。通过可学习的融合权重,模型可以自动调整两种方法的重要性,从而获得更好的检测效果。实验结果表明,Bi-LSTM-AP模型的准确率达到了98.86%,召回率达到了97.56%,明显优于传统的Bi-LSTM模型。
混合检测模型
混合检测模型的完整功能,包括以下几个关键部分:
-
模型初始化:接收两个基础模型(随机森林和Bi-LSTM-AP)以及相关的预处理组件,并设置融合权重。
-
数据预处理方法:分别实现了用于随机森林和Bi-LSTM-AP模型的数据预处理方法,确保输入数据的格式正确。
-
预测方法:对输入的HTTP请求,分别使用两个基础模型进行预测,然后融合预测结果,得到最终的预测结果和概率。
-
评估方法:计算混合模型的各项性能指标,包括准确率、召回率和正常请求检测率。这段代码实现了基于加权融合的混合检测模型,该模型结合了基于权重向量的随机森林模型和基于词嵌入矩阵的Bi-LSTM-AP模型的检测结果,提高了系统的整体检测能力和泛化能力。
class HybridDetectionModel:
"""
混合检测模型,融合随机森林和Bi-LSTM-AP模型的检测结果
"""
def __init__(self, rf_model, bilstm_ap_model, tfidf_vectorizer, word2vec_model, max_length):
"""
初始化混合检测模型
参数:
rf_model: 随机森林模型
bilstm_ap_model: Bi-LSTM-AP模型
tfidf_vectorizer: TF-IDF向量化器
word2vec_model: Word2Vec模型
max_length: 序列最大长度
"""
self.rf_model = rf_model
self.bilstm_ap_model = bilstm_ap_model
self.tfidf_vectorizer = tfidf_vectorizer
self.word2vec_model = word2vec_model
self.max_length = max_length
self.w1 = 0.3 # 随机森林的权重
self.w2 = 0.7 # Bi-LSTM-AP的权重
def preprocess_for_rf(self, request):
"""
预处理请求数据,用于随机森林模型
"""
# 处理恶意关键词
malicious_keywords = ['asf', 'wide', 'cookie', 'script', 'waitfor', 'delay', 'tamper', 'ida']
processed_request = request
for keyword in malicious_keywords:
processed_request = processed_request.replace(keyword, "MALICIOUS_TOKEN")
# 转换为TF-IDF向量
tfidf_vector = self.tfidf_vectorizer.transform([processed_request])
return tfidf_vector
def preprocess_for_bilstm(self, request):
"""
预处理请求数据,用于Bi-LSTM-AP模型
"""
# 分词
words = request.split()
# 转换为词索引
word_indices = []
for word in words[:self.max_length]:
if word in self.word2vec_model.wv:
word_indices.append(self.word2vec_model.wv.vocab[word].index + 1) # +1因为0通常用于填充
else:
# 未登录词,使用随机索引
word_indices.append(np.random.randint(1, len(self.word2vec_model.wv.vocab) + 1))
# 填充或截断到固定长度
while len(word_indices) < self.max_length:
word_indices.append(0) # 0作为填充符
return np.array([word_indices])
def predict(self, request):
"""
预测请求是否为恶意请求
参数:
request: HTTP请求数据
返回:
prediction: 预测结果,0表示正常请求,1表示恶意请求
probability: 预测概率
"""
# 1. 使用随机森林模型预测
rf_input = self.preprocess_for_rf(request)
rf_prob = self.rf_model.predict_proba(rf_input)[0, 1] # 恶意请求的概率
# 2. 使用Bi-LSTM-AP模型预测
bilstm_input = self.preprocess_for_bilstm(request)
bilstm_prob = self.bilstm_ap_model.predict(bilstm_input)[0, 0]
# 3. 融合预测结果
fused_prob = self.w1 * rf_prob + self.w2 * bilstm_prob
# 4. 判断请求类型
prediction = 1 if fused_prob >= 0.5 else 0
return prediction, fused_prob
def evaluate(self, test_data, test_labels):
"""
评估模型性能
参数:
test_data: 测试数据
test_labels: 测试标签
返回:
accuracy: 准确率
recall: 召回率
drn: 正常请求检测率
"""
predictions = []
probabilities = []
for request in test_data:
pred, prob = self.predict(request)
predictions.append(pred)
probabilities.append(prob)
# 计算性能指标
from sklearn.metrics import accuracy_score, recall_score, confusion_matrix
accuracy = accuracy_score(test_labels, predictions)
recall = recall_score(test_labels, predictions)
# 计算DRN (正常请求检测率)
tn, fp, fn, tp = confusion_matrix(test_labels, predictions).ravel()
drn = tn / (tn + fp) if (tn + fp) > 0 else 0
return accuracy, recall, drn
混合检测模型的核心优势在于它可以从两个不同的角度对HTTP请求进行检测。随机森林模型基于权重向量,能够有效捕捉恶意请求中的关键词特征;而Bi-LSTM-AP模型基于词嵌入矩阵,能够更好地理解请求的语义信息。通过合理的权重融合,混合模型可以充分利用两个基础模型的优势,获得更好的检测效果。
重难点和创新点
研究难点
本研究在基于机器学习的恶意HTTP请求检测过程中,主要面临以下几个关键难点:
-
特征表示的有效性:HTTP请求数据的特征表示直接影响检测模型的性能。传统的特征表示方法,如统计特征和简单的词袋模型,难以捕捉HTTP请求中的语义信息和上下文依赖关系,导致对复杂恶意请求的检测效果不佳。如何设计有效的特征表示方法,充分捕捉HTTP请求中的关键信息,是研究的首要难点。
-
未知攻击的检测:恶意攻击者不断更新攻击手段,新型攻击层出不穷。传统的基于规则的检测方法难以应对未知攻击,而基于机器学习的方法虽然具有一定的自学习能力,但在面对训练集中未出现过的攻击类型时,检测效果往往不理想。如何提高模型对未知攻击的检测能力,增强系统的泛化性能,是研究的另一个重要难点。
-
模型性能的平衡:在恶意HTTP请求检测中,需要同时考虑对正常请求和恶意请求的检测能力。一个优秀的检测系统应该具有高准确率、高召回率和高正常请求检测率。然而,这三个指标之间往往存在权衡关系,提高一个指标可能导致其他指标下降。如何在这三个指标之间取得平衡,构建综合性能最优的检测系统,是研究的第三个难点。
-
模型训练效率:HTTP请求数据通常规模较大,特征维度较高,这给模型训练带来了挑战。如何在保证检测效果的同时,提高模型的训练效率,减少计算资源消耗,是研究的第四个难点。
创新点
针对上述研究难点,本研究提出了一系列创新方法和技术,主要包括以下几个方面:
-
改进的权重计算方法:针对传统TF-IDF算法在恶意HTTP请求检测中的局限性,本研究提出了一种改进的权重计算方法。该方法通过将恶意请求中常见而正常请求中不常见的关键词转换为同一个词来计算权重,使得恶意请求中的恶意信息更加明显。这种方法不仅提高了模型对恶意请求的检测能力,还增强了对未知攻击的泛化能力。
-
Bi-LSTM-AP模型:针对传统Bi-LSTM网络在处理长序列时信息丢失的问题,本研究提出了一种结合注意力机制和最大池化方法的Bi-LSTM-AP模型。该模型通过注意力机制捕捉序列中的重要信息,通过最大池化突出显著特征,并通过可学习的权重融合两种方法的结果。Bi-LSTM-AP模型既保留了全面的语义信息,又突出了重要特征,从而获得了更好的检测效果。
-
混合检测模型:针对单一模型检测能力的局限性,本研究提出了一种基于加权融合的混合检测模型。该模型结合了基于权重向量的随机森林模型和基于词嵌入矩阵的Bi-LSTM-AP模型的检测结果,从两个不同的角度对HTTP请求进行判断。随机森林模型对恶意请求的检测能力较强,而Bi-LSTM-AP模型对正常请求的检测能力较强,两者融合后可以在三个性能指标之间取得更好的平衡。
-
基于决策树的特征选择:针对统计特征表示中存在的冗余问题,本研究使用基于决策树的特征选择方法对统计特征进行筛选。该方法通过计算每个特征的重要程度,选择重要程度最高的特征子集,在保留关键信息的同时减少特征维度。
总结
本研究针对基于机器学习的恶意HTTP请求检测问题进行了深入探讨,提出了一系列改进方法和创新模型。通过系统的实验验证,证明了这些方法和模型在提高检测准确率、增强泛化能力等方面的有效性。主要工作总结如下:
-
分析了恶意HTTP请求检测的研究背景和意义,回顾了相关领域的研究现状。随着Web应用的普及和攻击手段的不断演变,传统的基于规则的检测方法已难以满足实际需求,基于机器学习的检测方法因其自学习能力和泛化能力而受到广泛关注。
-
深入研究了HTTP请求的数据预处理和特征表示方法。针对统计特征表示中存在的冗余问题,使用基于决策树的特征选择方法筛选出重要特征,在保证检测准确率的同时提高了模型训练效率。针对权重向量表示,提出了改进的TF-IDF权重计算方法,将恶意请求中常见的关键词转换为同一个词计算权重,增强了恶意特征的表达。针对词嵌入矩阵表示,使用Word2Vec算法生成包含语义信息的词向量,为深度学习模型提供了更丰富的特征输入。
-
基于加权融合的混合检测模型,结合了随机森林模型和Bi-LSTM-AP模型的优势。混合模型从两个不同的角度对HTTP请求进行判断,可以在准确率、召回率和正常请求检测率之间取得更好的平衡。
参考文献
[1] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in Neural Information Processing Systems, 2017, 30: 5998-6008.
[2] Hochreiter S, Schmidhuber J. Long short-term memory[J]. Neural Computation, 1997, 9(8): 1735-1780.
[3] Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint arXiv:1301.3781, 2013.
[4] Liu C, Yang J, Wu J. Web intrusion detection system combined with feature analysis and SVM optimization[J]. EURASIP Journal on Wireless Communications and Networking, 2020, 2020(1): 1-9.
[5] Niu Q, Li X. A high-performance web attack detection method based on CNN-GRU model[C]//2020 IEEE 4th Information Technology, Networking, Electronic and Automation Control Conference (ITNEC). IEEE, 2020, 1: 804-808.
893



被折叠的 条评论
为什么被折叠?



