8000 GitHub - inanpy/fastapi-armor: FastAPI Armor
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

inanpy/fastapi-armor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fastapi-armor logo

Secure your FastAPI apps with a single line of code 🛡️

fastapi-armor is a security middleware that sets modern HTTP security headers for every response. It provides presets for common configurations (strict, relaxed, none) and allows overrides for full customization.


PyPI version Total downloads

🚀 Features

  • 📦 Simple plug-and-play integration with FastAPI
  • 🛡️ Protects your app with modern HTTP security headers
  • ⚙️ Fully customizable settings
  • 🧱 Built on top of Starlette and fully async

📦 Installation

Install via pip:

pip install fastapi-armor

⚙️ Usage Example

Here’s how to use ArmorMiddleware in a FastAPI application:

from fastapi import FastAPI
from fastapi_armor.middleware import ArmorMiddleware

app = FastAPI()

app.add_middleware(
    ArmorMiddleware,
    preset="strict",  # apply secure default set
    permissions_policy="geolocation=(), microphone=()"  # optionally override specific header
)

@app.get("/")
async def read_root():
    return {"message": "FastAPI with Armor Middleware is running!"}

▶️ Running the App

To run this FastAPI app locally using uvicorn, first install the required packages:

pip install fastapi uvicorn

Then start the app:

uvicorn example.main:app --reload

Visit your app at http://127.0.0.1:8000

You can inspect the HTTP headers in the browser or via curl:

curl -I http://127.0.0.1:8000

🎛️ Available Presets

You can use built-in presets to quickly apply a set of secure headers. These presets are designed for different use cases:

Preset Description
strict Applies all recommended security headers with strict values for maximum protection.
relaxed Applies a lighter set of headers suitable for more flexible or development environments.
none Disables all headers. Useful for debugging or local development where security is not a concern.

You can also override any individual header even when using a preset:

app.add_middleware(
    ArmorMiddleware,
    preset="strict",
    permissions_policy="geolocation=(), microphone=()"
)

🦩 Header Parameter Mapping

This table shows how to customize headers in the middleware by mapping FastAPI-Armor's parameter names to actual HTTP header fields:

Middleware Parameter Header Set Example Value
content_security_policy Content-Security-Policy "default-src 'self'; img-src *;"
frame_options X-Frame-Options "DENY" or "SAMEORIGIN"
hsts Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
x_content_type_options X-Content-Type-Options "nosniff"
referrer_policy Referrer-Policy "no-referrer" or "strict-origin"
permissions_policy Permissions-Policy "geolocation=(), microphone=()"
dns_prefetch_control X-DNS-Prefetch-Control "off" or "on"
expect_ct Expect-CT "max-age=86400, enforce"
origin_agent_cluster Origin-Agent-Cluster "?1" or "?0"
cross_origin_embedder_policy Cross-Origin-Embedder-Policy "require-corp"
cross_origin_opener_policy Cross-Origin-Opener-Policy "same-origin" or "unsafe-none"
cross_origin_resource_policy Cross-Origin-Resource-Policy "same-origin", "same-site", or "cross-origin"

Use these parameter names when configuring the middleware. For example, permissions_policy="geolocation=()" will set the Permissions-Policy HTTP header.


🛡️ Included Headers & Their Purpose

By default or optionally, ArmorMiddleware can apply the following headers:

Header Description
Content-Security-Policy Mitigates XSS and data injection attacks by specifying allowed content sources.
X-Frame-Options Prevents clickjacking by disallowing rendering inside <iframe>.
Strict-Transport-Security Forces use of HTTPS for future requests, helping prevent man-in-the-middle attacks.
X-Content-Type-Options Disables MIME-type sniffing to avoid content-type confusion.
Referrer-Policy Controls the Referer header sent in requests — reduces accidental info leakage.
Permissions-Policy Limits access to browser APIs like geolocation, camera, microphone, etc.
X-DNS-Prefetch-Control Prevents browsers from resolving DNS of external domains before user interaction.
Expect-CT Ensures valid Certificate Transparency logs for HTTPS connections.
Origin-Agent-Cluster Provides context isolation for enhanced privacy and safety.
Cross-Origin-Embedder-Policy (COEP) Blocks loading resources unless they explicitly allow being embedded.
Cross-Origin-Opener-Policy (COOP) Helps isolate browsing contexts to prevent cross-window attacks.
Cross-Origin-Resource-Policy (CORP) Restricts which origins can load resources from your site.

📚 Standards References

For more details on these headers and their standard definitions, refer to the following official resources:

Official Standards & Specifications

Security Organizations & Best Practices

Documentation & Practical Implementation

These resources represent officially accepted standards, specifications, and industry best practices for implementing security headers in modern web applications.


👥 Contributors

Special thanks to the following contributors who have helped improve this project:

If you'd like to contribute, please feel free to submit a pull request!


📄 License

This project is licensed under the MIT License. © 2025 Inan Delibas

About

FastAPI Armor

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages

0