Text Classification
Keras
English
Azerbaijani
prompt-injection
security
llm-security
document-security
retvec
cnn
tensorflow
fastapi
Eval Results (legacy)
Instructions to use MegrurNiftiyev/MyGuard-Prompt-Injection-Detector with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use MegrurNiftiyev/MyGuard-Prompt-Injection-Detector with Keras:
# Available backend options are: "jax", "torch", "tensorflow". import os os.environ["KERAS_BACKEND"] = "jax" import keras model = keras.saving.load_model("hf://MegrurNiftiyev/MyGuard-Prompt-Injection-Detector") - Notebooks
- Google Colab
- Kaggle
Download app/api/dependencies.py from MegrurNiftiyev/MyGuard-Prompt-Injection-Detector: direct link, hf CLI and curl.
- Browser
- Download file 2.9 kB
-
https://huggingface.co/MegrurNiftiyev/MyGuard-Prompt-Injection-Detector/resolve/main/app/api/dependencies.py
- Command line
-
hf download hf://MegrurNiftiyev/MyGuard-Prompt-Injection-Detector/app/api/dependencies.py
-
curl -L -o dependencies.py https://huggingface.co/MegrurNiftiyev/MyGuard-Prompt-Injection-Detector/resolve/main/app/api/dependencies.py
2.9 kB
| """ | |
| Shared dependencies for API routes with IP rate-limiting & security ban protection. | |
| """ | |
| from collections import defaultdict | |
| from fastapi import Header, HTTPException, Request | |
| from app.core.config import settings | |
| from app.core.logging import get_logger | |
| logger = get_logger(__name__) | |
| # Security tracking dictionaries | |
| _failed_ip_attempts: dict[str, int] = defaultdict(int) | |
| _banned_ips: set[str] = set() | |
| MAX_FAILED_ATTEMPTS = 3 | |
| async def verify_internal_service( | |
| request: Request, | |
| x_internal_token: str | None = Header(None, alias="X-Internal-Token", include_in_schema=False), | |
| ): | |
| """Validate internal service-to-service token with IP security ban enforcement. | |
| NOTE: TOKEN ENFORCEMENT IS CURRENTLY TEMPORARILY DISABLED FOR EASY LOCAL TESTING. | |
| To re-enable strict production token security, uncomment the security block below. | |
| """ | |
| # ========================================================================= | |
| # [TEMPORARY DEV BYPASS] Internal Token check disabled for local testing. | |
| # To re-enable strict production token verification & IP banning: | |
| # Remove 'return None' below and uncomment the security check block. | |
| # ========================================================================= | |
| return None | |
| # --- STRICT PRODUCTION SECURITY BLOCK (DISABLED FOR LOCAL DEV TESTING) --- | |
| # client_ip = request.client.host if request.client else "unknown" | |
| # | |
| # # 1. Check if IP is banned | |
| # if client_ip in _banned_ips: | |
| # logger.warning("Blocked request from banned IP: %s", client_ip) | |
| # raise HTTPException( | |
| # status_code=403, | |
| # detail="Access forbidden: Client IP is banned due to repeated authentication failures.", | |
| # ) | |
| # | |
| # # 2. Check header token | |
| # if not x_internal_token or x_internal_token != settings.INTERNAL_SERVICE_TOKEN: | |
| # _failed_ip_attempts[client_ip] += 1 | |
| # failed_count = _failed_ip_attempts[client_ip] | |
| # | |
| # logger.warning( | |
| # "Authentication failed for IP %s (attempt %d/%d)", | |
| # client_ip, | |
| # failed_count, | |
| # MAX_FAILED_ATTEMPTS, | |
| # ) | |
| # | |
| # if failed_count >= MAX_FAILED_ATTEMPTS: | |
| # _banned_ips.add(client_ip) | |
| # logger.error("IP %s has been banned after %d failed attempts.", client_ip, failed_count) | |
| # raise HTTPException( | |
| # status_code=403, | |
| # detail="Access forbidden: Client IP has been banned due to repeated authentication failures.", | |
| # ) | |
| # | |
| # raise HTTPException(status_code=401, detail="Unauthorized service call: Invalid X-Internal-Token header.") | |
| # | |
| # # Reset attempt counter on clean success | |
| # if client_ip in _failed_ip_attempts: | |
| # _failed_ip_attempts[client_ip] = 0 | |
| # ========================================================================= | |