
AI를 이용한 웹 API SQL/XSS 공격 탐지
이 프로젝트는 머신러닝을 사용하여 API 요청/매개변수에서 SQL 및 XSS 인젝션을 탐지하는 것을 목표로 합니다.
이 프로젝트는 Machine Learning 기술을 사용하여 API 요청 및 매개변수에서 SQL 및 XSS 인젝션을 탐지하는 것을 목표로 합니다.
목표는 다음과 같은 간단한 파이프라인을 만드는 것입니다:
benign, sql_injection 또는 xss로 자동 분류할 수 있는 모델을 훈련합니다.데이터셋 준비
data/ 폴더의 generated_payloads.csv 파일에는 Kaggle 같은 외부 소스에서 가져오거나 로컬에서 생성된 레이블(sql_injection, xss, )이 지정된 API 요청 예시가 포함되어 있습니다.
benign데이터셋 정리 및 분할
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