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/settings.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.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5aebf5acf795c8cab0a706138624497b40bc7f6d3231c9e6f58714475de89601 |
|
MD5 | 2dbb16bc7fe9fed519ab313df83849ad |
|
BLAKE2b-256 | 8a27b83088979f74ab28f72ec3affaa4f38f937fc932d8db1d7d43a3e797bf41 |
Hashes for fastapi_security_middleware-0.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cef2fb95ccafed2269ef71d97259f13fb12604357795f025306bb0e6c27f3747 |
|
MD5 | c52ef8c2d1be6a0dc02351bd983d3fec |
|
BLAKE2b-256 | d216ee34c77986c93dccbf4dc63f9404dcc73e9c1c0b955dfc92ec36b661d978 |