Simple security middleware for FastAPI
Project description
Simple Security for FastAPI
Este projeto fornece um middleware de segurança de facíl condiguração para FastAPI, permitindo a detecção e mitigação de ataques de injeção (SQL, XSS, NoSQL) e a adição de cabeçalhos de segurança às respostas.
Instalação
Instale a biblioteca via pip:
pip install fastapi-SimpleSecurity
Configuração
Arquivo de Configuração
Edite o arquivo config.yaml
na pasta app/config/
para definir as regras de injeção, exclusões e limitação de taxa. Exemplo:
rules:
injection:
enabled: true
sql:
enabled: true
patterns:
- "(?i)\\b(select|insert|update|delete|drop|truncate|alter|exec|execute|declare|union|join)\\b|'--|--[\\s]*$|';[\\s]*$|\"\\s*;|/\\*.*\\*/|--[^-]*-|' OR ''='|' OR '1'='1|' OR 1=1|--|/\\*|\\*/|;|@@|char\\(|nchar\\(|varchar\\(|nvarchar\\(|alter\\(|begin\\(|cast\\(|create\\(|cursor\\(|declare\\(|delete\\(|drop\\(|end\\(|exec\\(|execute\\(|fetch\\(|insert\\(|kill\\(|open\\(|select\\(|sys\\(|sysobjects\\(|syscolumns\\(|table\\(|update\\("
- '(?i)(\\b(SELECT|INSERT|UPDATE|DELETE|DROP|TRUNCATE|ALTER|EXEC|EXECUTE|DECLARE|UNION|JOIN)\\b|--;|'';|-- |\\x27|\\x22)'
xss:
enabled: true
patterns:
- "<script[^>]*?>.*?</script>"
- "<iframe[^>]*?>.*?</iframe>"
- "<object[^>]*?>.*?</object>"
- "(?i)javascript:"
- "(?i)\\bon\\w+=.*"
- "(?i)<img[^>]+src[^>]+onerror=.*"
- "(?i)<a[^>]+href[^>]+javascript:.*"
- "(?i)\\bstyle=.*expression\\(.*"
- "(?i)\\bstyle=.*url\\(.*"
- "(?i)\\bstyle=.*import\\(.*"
- "(?i)\\b@import\\b"
nosql:
enabled: true
patterns:
- "\\{\\$ne\\}"
- "\\{\\$gt\\}"
- "\\{\\$lt\\}"
- "\\{\\$exists\\}"
- "\\{\\$regex\\}"
- "\\{\\$where\\}"
- "\\{\\$all\\}"
- "\\{\\$elemMatch\\}"
exclusions:
- "/excluded-route"
rate_limiting:
enabled: true
requests: 100
per_minute: 1
Inicialização do Middleware
Para usar o middleware de segurança em sua aplicação FastAPI, configure e adicione o middleware usando a classe WAFMiddleware
:
from fastapi import FastAPI
from simple_security.middleware import WAFMiddleware
app = FastAPI()
waf_middleware = WAFMiddleware(app, config_file_path="app/config/config.yaml")
@app.get("/")
async def root():
return {"message": "Hello, World!"}
Funcionalidades
Filtros de Injeção
O middleware verifica padrões de injeção em solicitações para detectar e prevenir ataques de injeção SQL, XSS e NoSQL.
- SQL Injection: Detecta padrões comuns de injeção SQL.
- XSS (Cross-Site Scripting): Detecta scripts maliciosos embutidos em solicitações.
- NoSQL Injection: Detecta padrões de injeção NoSQL.
Cabeçalhos de Segurança
O middleware adiciona cabeçalhos de segurança às respostas para proteger contra várias ameaças.
X-Frame-Options
Cache-Control
Clear-Site-Data
Content-Security-Policy
Cross-Origin-Embedder-Policy
Cross-Origin-Opener-Policy
Cross-Origin-Resource-Policy
Referrer-Policy
Strict-Transport-Security
X-Content-Type-Options
X-DNS-Prefetch-Control
X-Download-Options
X-Permitted-Cross-Domain-Policies
X-XSS-Protection
Exclusões
Você pode especificar caminhos a serem excluídos das verificações de segurança no arquivo de configuração.
Limitação de Taxa
O middleware suporta limitação de taxa, permitindo definir o número de solicitações permitidas por minuto.
Licença
Distribuído sob a licença MIT. Veja LICENSE
para mais informações.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for fastapi_security_middleware-0.1.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad4c3a0fe21ee7ab6c5a68a5f532dfeea977c97e91b1a428b6e993f1c0e72eaa |
|
MD5 | c0fcb2801219a178e3ef42da77159496 |
|
BLAKE2b-256 | bc66aaca3fc2fcde278756f6e6d1344bff613a6abe497fb3f19fa0f871fba17b |
Hashes for fastapi_security_middleware-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9a2ffbbd45639f579231496f49f3fa85040a98613fb11167ccfdc423b694f77 |
|
MD5 | 388e240096e1c6a12f8c4c3fe118098b |
|
BLAKE2b-256 | bb79f506eced46a3e37af1606e383a5414cbf8854f702cc6bf7168185f0ac683 |