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-OptionsCache-ControlClear-Site-DataContent-Security-PolicyCross-Origin-Embedder-PolicyCross-Origin-Opener-PolicyCross-Origin-Resource-PolicyReferrer-PolicyStrict-Transport-SecurityX-Content-Type-OptionsX-DNS-Prefetch-ControlX-Download-OptionsX-Permitted-Cross-Domain-PoliciesX-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.
Release files for fastapi-security-middleware 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fastapi_security_middleware-0.1.3.tar.gz | 15.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastapi_security_middleware-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.3 kB
Release files / fastapi_security_middleware-0.1.3.tar.gz
| Download URL | fastapi_security_middleware-0.1.3.tar.gz |
|---|---|
| Size | 15.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5aebf5acf795c8cab0a706138624497b40bc7f6d3231c9e6f58714475de89601
|
|
BLAKE2b-256 checksum How to use checksums |
8a27b83088979f74ab28f72ec3affaa4f38f937fc932d8db1d7d43a3e797bf41
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.19
|
Release files / fastapi_security_middleware-0.1.3-py3-none-any.whl
| Download URL | fastapi_security_middleware-0.1.3-py3-none-any.whl |
|---|---|
| Size | 12.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cef2fb95ccafed2269ef71d97259f13fb12604357795f025306bb0e6c27f3747
|
|
BLAKE2b-256 checksum How to use checksums |
d216ee34c77986c93dccbf4dc63f9404dcc73e9c1c0b955dfc92ec36b661d978
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.19
|