{"id":24932662,"url":"https://github.com/joshjarabek7/hiss","last_synced_at":"2026-05-01T15:36:41.684Z","repository":{"id":243457405,"uuid":"807923021","full_name":"JoshJarabek7/hiss","owner":"JoshJarabek7","description":"Secure your FastAPI applications effortlessly with Hiss! 🐍🔒 Hiss offers a collection of decorators and custom middleware for seamless integration of advanced security features, including virus scanning with ClamAV, input sanitization, and robust authentication/authorization. Build powerful and secure APIs with ease. 🛡️✨","archived":false,"fork":false,"pushed_at":"2024-06-09T03:41:16.000Z","size":101,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T14:43:44.913Z","etag":null,"topics":["api","async","authentication","authorization","clamav","decorators","fastapi","input-validation","open-source","pydantic","python","security","virus-scanning","web-framework"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JoshJarabek7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-30T03:22:27.000Z","updated_at":"2024-06-09T03:41:20.000Z","dependencies_parsed_at":"2024-06-09T04:33:21.939Z","dependency_job_id":"7548a821-65c4-42f6-8749-f2ee42a6477e","html_url":"https://github.com/JoshJarabek7/hiss","commit_stats":null,"previous_names":["joshjarabek7/hiss"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JoshJarabek7/hiss","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshJarabek7%2Fhiss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshJarabek7%2Fhiss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshJarabek7%2Fhiss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshJarabek7%2Fhiss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JoshJarabek7","download_url":"https://codeload.github.com/JoshJarabek7/hiss/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshJarabek7%2Fhiss/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32503199,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","async","authentication","authorization","clamav","decorators","fastapi","input-validation","open-source","pydantic","python","security","virus-scanning","web-framework"],"created_at":"2025-02-02T14:50:16.272Z","updated_at":"2026-05-01T15:36:41.649Z","avatar_url":"https://github.com/JoshJarabek7.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hiss 🐍 (WORK IN PROGRESS)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nHiss 🐍 is a Python package that provides easy-to-use decorators and middleware for FastAPI/Starlette routes to enhance security and functionality. It aims to offer modular and customizable solutions for common security features, allowing developers to choose the batteries they need without the bloat.\n\n# Roadmap\n\n## Virus Scanning (STATUS: IN-PROGRESS)\n\n- Drop-in decorator for routes (COMPLETED)\n- Drop-in middleware for FastAPI \u0026 Starlette (COMPLETED)\n- Automated checks for virus signature updates using FreshClam abstraction (COMPLETED)\n- Extensive customization options to add desired flags (COMPLETED)\n- Set default settings on startup and tweak them for specific endpoints (COMPLETED)\n- Adapters for use with different ClamAV versions (IN-PROGRESS)\n- Option for compilation of ClamAV C library to bundle installation with pip package (IN-PROGRESS)\n- C-Bindings for libclamav (IN-PROGRESS - need to investigate FOSS licensing for it)\n- Deploy to PyPI (IN-PROGRESS)\n\n## Sanitizer (STATUS: NOT STARTED)\n- Simple decorator to automatically sanitize inputs and prevent HTML \u0026 SQL injection (NOT STARTED)\n- Simple middleware to automatically sanitize inputs and prevent HTML \u0026 SQL injection (NOT STARTED)\n\n## Session-based and Token-based Auth\n- Integration with your database and cache (NOT STARTED)\n- Set rules ahead of time to automate authentication and authorization flow, reducing boilerplate code for each endpoint (NOT STARTED)\n- Compatibility with both stateful and stateless authentication flows (NOT STARTED)\n- Automatic attachment and verification of CSRF tokens on request and response (NOT STARTED)\n\n## Extensive Documentation\n- Virus Scanning (NOT STARTED)\n- Sanitizer (NOT STARTED)\n- Auth (NOT STARTED)\n- There will be a lot of breaking changes, so I will not start on documentation until things become a little more stable.\n\n## Templating Repo\n- Create Dockerfile templates and scripting for serverless scanning to keep malicious files separate from web servers (NOT STARTED)\n- Easy Forwarding Scripts to forward files or alerts to specific endpoints (NOT STARTED)\n- Integrate AMQP (NOT STARTED)\n\n## Other\n- 100% Coverage Testing for unit and integration (IN-PROGRESS)\n- WebAssembly Runtime for browser? (TBD / NOT-STARTED)\n- Sandboxing (IN-PROGRESS)\n- Completely in-memory (INVESTIGATING)\n\nFeel free to discuss or suggest ideas and features in the Discussions tab!\n\n## Installation\nTODO - Not on PyPi yet, we have a long way to go. Placeholder.\n\n## Usage\n\n```python\nfrom fastapi import FastAPI, File, UploadFile\nfrom hiss import scan_upload\nfrom hiss.fastapi.middleware import FileUploadScanMiddleware\n\napp = FastAPI()\n\n# --- OPTION 1: Middleware-based option (automatic) ---\napp.add_middleware(FileUploadScanMiddleware) # That's it!\n\n@app.post(\"/upload\")\nasync def upload_file(file: UploadFile = File(...)):\n    # Process the clean file (middleware cleaned it already)\n    pass\n# --- END OPTION 1 ---\n\n# --- OPTION 2: Decorator-based option ---\n@app.post(\"/upload\")\n@scan_upload() # That's it!\nasync def upload_file(file: UploadFile = File(...)):\n    # Process the clean file (decorator cleaned it already)\n    pass\n# --- END OPTION 2 ---\n```\n\nFor more detailed usage instructions and examples, please refer to the [documentation (TODO)](google.com).\n\n## Contributing\n\nTODO - Contributions are welcome! Please read the [contribution guidelines](CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the terms of the [MIT License](LICENSE).\n\n## Acknowledgements\n\n- [FastAPI](https://fastapi.tiangolo.com/)\n- [ClamAV](https://www.clamav.net/)\n- [Pydantic](https://pydantic-docs.helpmanual.io/)\n\n## Contact\n\nFor any questions or inquiries, please contact [jarabekjosh@icloud.com](mailto:jarabekjosh@icloud.com).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshjarabek7%2Fhiss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoshjarabek7%2Fhiss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshjarabek7%2Fhiss/lists"}