Skip to main content

CLI tool for Detecting SQL Injections

Project description

SQShield: SQL Injection Detection Tool

License: MIT Python Version PyPI Version

SQShield is a command-line tool designed to detect potential SQL injection (SQLi) attacks in your queries. It leverages a pre-trained machine learning model to classify queries as either malicious or benign, helping you secure your applications against common database threats.

Features

  • SQLi Detection: Classifies SQL queries to identify potential injection attacks.
  • Easy to Use: Simple and intuitive command-line interface.
  • Detailed Reporting: Provides a detailed feature report for in-depth query analysis.
  • Lightweight: Minimal dependencies and a small footprint.

Installation

You can install SQShield directly from this repository.

  1. Clone the repository:

    git clone https://github.com/your-username/sqshield.git
    cd sqshield
    
  2. Install the package: For development or local installation, use pip with the editable flag:

    pip install -e .
    

    This will install the package and make the sqshield command available in your shell.

Usage

The primary command is sqshield, which accepts a SQL query string as an argument.

Basic Prediction

To check a query, pass it as an argument:

sqshield "SELECT * FROM users WHERE id = '1' OR '1'='1'"

Expected Output:

Query is MALICIOUS

To check a benign query:

sqshield "SELECT * FROM products WHERE category = 'electronics'"

Expected Output:

Query is BENGIN

Get a Detailed Report

For a more detailed analysis, use the --report or -r flag. This shows the feature vector used by the model for its prediction.

sqshield "SELECT * FROM users" --report

Expected Output:

 query_length  ...  semicolon_count
          19   ...                0

(Note: The output will be a full DataFrame representation of the query's features.)

Check Version

To display the installed version of SQShield, use the --version or -v flag:

sqshield --version

Expected Output:

sqshield version : 0.1.0

How It Works

SQShield processes each input query by extracting a set of lexical features. These features, which include query length, keyword counts (e.g., SELECT, UNION), special character frequencies, and structural properties, are fed into a pre-trained LightGBM classification model. The model then predicts whether the query is MALICIOUS or BENGIN.

The model (sql_injection_model.pkl) is included with the package.

Contributing

Contributions are welcome! If you have suggestions for improvements or find any bugs, please feel free to open an issue or submit a pull request.

  1. Fork the repository.
  2. Create a new feature branch (git checkout -b feature/your-feature).
  3. Commit your changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin feature/your-feature).
  5. Open a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqshield-0.1.0.tar.gz (132.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqshield-0.1.0-py3-none-any.whl (131.2 kB view details)

Uploaded Python 3

File details

Details for the file sqshield-0.1.0.tar.gz.

File metadata

  • Download URL: sqshield-0.1.0.tar.gz
  • Upload date:
  • Size: 132.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for sqshield-0.1.0.tar.gz
Algorithm Hash digest
SHA256 20cbbdb7eb7c4fcaecdd48be1bd435e08c168acd444da4f83256cee2014fdfb3
MD5 a47a6a8c6218f70e28bfecacb923134d
BLAKE2b-256 723dfc530d753a45be9da44fef126fa1d9212253f911cbbb79aabc36784da381

See more details on using hashes here.

File details

Details for the file sqshield-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: sqshield-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 131.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for sqshield-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 86bb4d3f74c2ab47ca17ce95689d2008a80010f18176e94ea489c73404760ba8
MD5 0f829b42d7a3169796173f5dea26635f
BLAKE2b-256 1b938cb3f7022963010f4d61e730721e2786eabe41bf664417fa44382bb049e4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page