このプロジェクトは、機械学習を用いてAPIのリクエスト/パラメータ内のSQLインジェクションとXSSを検出することを目的としています。
このプロジェクトは、Machine Learningの技術を使用して、APIのリクエストとパラメータ内のSQLインジェクションおよびXSSを検出することを目的としています。
目標は、以下のことを可能にするシンプルなパイプラインを構築することです:
benign、sql_injection、xssのいずれかに自動分類できるモデルを訓練する、データセットの準備
data/フォルダ内のgenerated_payloads.csvファイルには、Kaggleなどの外部ソースから取得した、またはローカルで生成されたラベル付き(sql_injection、xss、benign)のAPIリクエストの例が含まれています。
データセットのクリーニングと分割
python scripts/clean_and_split.py
スクリプトの処理内容:
重複行と空行を削除する、
テキストをクリーニングする(スペース、改行、タブ)、
ラベルを正規化する、
また、以下を生成します:
data/combined.csv : クリーニング済みの完全なデータセット、
data/train.csv : トレーニングデータ(80%)、
data/test.csv : テストデータ(20%)。
python scripts/train_model.py
モデルはMLパイプラインを使用します:
TF-IDF Vectorizer (TfidfVectorizer) : テキストのリクエストを数値ベクトルに変換し、疑わしい単語や記号の重要性を捉えます。
Logistic Regression (LogisticRegression) : TF-IDFベクトルをsql_injection、xss、benignの各クラスに関連付けることを学習する教師あり分類器です。
トレーニング後、モデルはmodelsディレクトリに保存され、その後、新しいリクエストのクラスを予測するために使用できます。
pytest -v -s tests/test_pipeline.py
テストでは以下を検証します:
モデルがロード可能であること、
いくつかの単純なサンプルを正しく予測できること、
パイプラインエラーが発生しないこと。
pip3 install -r requirements.txt
ライブラリ
pandas
scikit-learn
joblib
pytest