2.3.4 Sanitize Sensitive Data

Sanitize Sensitive Data

Input Validation & Sanitization

import html
import re

def sanitize_input(user_input):
    # Prevent XSS — escape HTML entities
    sanitized = html.escape(user_input)
    # Remove potential SQL injection patterns
    sanitized = re.sub(r"['\";--]", "", sanitized)
    # Trim whitespace
    sanitized = sanitized.strip()
    return sanitized

Common Attack Vectors

AttackMô tảPrevention
SQL InjectionInject SQL qua inputParameterized queries, input validation
XSSInject script qua inputHTML escape, Content-Security-Policy
Command InjectionInject OS commandsAvoid shell execution, whitelist input
Path TraversalAccess files ngoài scopeValidate paths, chroot

Parameterized Queries (Prevent SQL Injection)

# BAD — SQL Injection vulnerable
query = f"SELECT * FROM users WHERE id = '{user_input}'"

# GOOD — Parameterized query
cursor.execute("SELECT * FROM users WHERE id = %s", (user_input,))

API Gateway Request Validation

# SAM template — request validation
MyApi:
  Type: AWS::Serverless::Api
  Properties:
    Models:
      CreateOrderModel:
        type: object
        required:
          - productId
          - quantity
        properties:
          productId:
            type: string
            pattern: "^[a-zA-Z0-9-]+$"
          quantity:
            type: integer
            minimum: 1
            maximum: 100
  • Validate request body, query parameters, headers
  • Reject invalid requests trước khi đến Lambda
  • Giảm unnecessary Lambda invocations

AWS WAF (Web Application Firewall)

WAF bảo vệ web applications khỏi common exploits.

Deployment Points

ServiceWAF Support
CloudFront✅ (global)
API Gateway (REST)✅ (regional)
ALB✅ (regional)
AppSync✅ (regional)
API Gateway (HTTP)

Rule Types

RuleMô tả
Managed RulesAWS và marketplace rules (SQL injection, XSS, bad bots)
Rate-basedBlock IPs exceeding request threshold
IP SetAllow/block specific IP ranges
Geo MatchBlock/allow by country
Size ConstraintLimit request body size
Regex PatternMatch custom patterns

Common Managed Rule Groups

Rule GroupProtection
AWSManagedRulesCommonRuleSetGeneral web exploits
AWSManagedRulesSQLiRuleSetSQL injection
AWSManagedRulesKnownBadInputsRuleSetKnown bad patterns
AWSManagedRulesBotControlRuleSetBot traffic

WAF + API Gateway Example

# CloudFormation
WebACL:
  Type: AWS::WAFv2::WebACL
  Properties:
    DefaultAction:
      Allow: {}
    Rules:
      - Name: RateLimit
        Priority: 1
        Action:
          Block: {}
        Statement:
          RateBasedStatement:
            Limit: 2000
            AggregateKeyType: IP
  • WAF logs → S3, CloudWatch Logs, Kinesis Data Firehose
  • Web ACL capacity units (WCU) limit per ACL

Exam Tip: API Gateway request validation = first line of defense. WAF cho SQL injection/XSS protection. Parameterized queries cho database. Validate + sanitize tại mọi layer.