Skip to content

Mitigating Prompt Injection

Mitigating Prompt Injection Risks

Prompt injection vulnerabilities arise when attackers manipulate input to alter a model’s behavior, bypassing intended guardrails. Mitigation requires a layered approach combining input sanitization, structured prompt templating, and runtime validation. Below are actionable strategies to reduce risks effectively.


1. Input Sanitization & Token Filtering

Filter user inputs to remove or replace potentially malicious tokens (e.g., special characters, control sequences). Use regex patterns or token replacement rules to neutralize injection attempts.

Example:

import re

def sanitize_input(user_input):
    # Remove potential injection tokens (example pattern)
    sanitized = re.sub(r'<\|.*?\|>', '', user_input)
    return sanitized

Best Practices:
- Avoid relying solely on regex; combine with model-specific token filtering.
- Log and monitor suspicious patterns (e.g., repeated special characters).

Diagram:

User Input → [Sanitization Filter] → [Model Inference] → Output


2. Prompt Templating with Parameterized Slots

Use structured templates to isolate user inputs from system instructions. Embed user data into predefined slots, ensuring it cannot alter the model’s core behavior.

Example:

template = """<|system|> You are a helpful assistant. Answer the user's query: <|user|>{user_input}</<|user|>"""
prompt = template.format(user_input=user_input)

Best Practices:
- Separate system prompts from user inputs using delimiters (e.g., <|system|>, <|user|>).
- Validate that user inputs conform to expected formats (e.g., length, allowed characters).

Diagram:

[User Input] → [Template Engine] → [Model Inference] → Output


3. Runtime Validation & Guardrails

Implement real-time checks to detect anomalies in inputs or outputs. Use model-specific tools to enforce safety policies.

Example:

def validate_output(output):
    if "attack" in output.lower() or "malicious" in output.lower():
        raise ValueError("Detected potential injection attempt")

Tools to Consider:
- Microsoft Guardrails: For enforcing safety policies during inference.
- Hugging Face SafetyClassifier: To detect harmful content in outputs.

Diagram:

[Model Output] → [Validation Checker] → [Allow/Block Decision] → Final Output


4. Rate Limiting & Anomaly Detection

Monitor input patterns for unusual activity (e.g., repeated requests, malformed tokens). Use rate-limiting to prevent brute-force attacks.

Example:

# Example rate-limiting rule (NGINX)
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;


Key takeaways

  • Sanitize inputs to neutralize special characters and control sequences.
  • Use parameterized templates to isolate user data from system instructions.
  • Validate outputs in real time with guardrails or safety tools.
  • Monitor for anomalies via rate-limiting and logging to detect injection attempts.
  • Combine multiple strategies for robust defense, as no single method is foolproof.