Courses/PHP/Advanced Security

    Lesson 24 โ€ข Advanced

    Securing PHP Applications ๐Ÿ›ก๏ธ

    Defend against advanced attack vectors โ€” second-order injection, stored XSS, file inclusion, session fixation โ€” and harden your PHP configuration.

    What You'll Learn in This Lesson

    • โ€ข Second-order SQL injection and persistent XSS
    • โ€ข File inclusion (LFI/RFI) and insecure deserialization
    • โ€ข Security headers: CSP, HSTS, X-Frame-Options
    • โ€ข php.ini hardening for production servers
    • โ€ข A complete security audit checklist

    Advanced Attack Vectors

    Beyond basic SQL injection and XSS, advanced attacks exploit subtle trust assumptions. Second-order injection uses data that was safely stored but unsafely retrieved. File inclusion exploits dynamic include() calls. Understanding these vectors is essential for building truly secure applications.

    Try It: Attack Vectors & Headers

    Explore advanced attacks and security header configuration

    Try it Yourself ยป
    JavaScript
    // Advanced Attack Vectors & Defenses
    console.log("=== Beyond the Basics: Advanced Attacks ===");
    console.log();
    
    console.log("1๏ธโƒฃ SECOND-ORDER SQL INJECTION");
    console.log("โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€");
    console.log("Attack: Malicious data is stored safely, then used unsafely later");
    console.log("  Registration: name = "admin'--" (stored in DB, escaped on insert)");
    console.log("  Later query: SELECT * FROM users WHERE name = '$storedName'");
    console.log("  โ†’ The stored value breaks out of 
    ...

    PHP Hardening & Defense in Depth

    Security isn't a single technique โ€” it's layers of defense. Harden your php.ini, sanitize inputs with filter functions, encode outputs, set secure cookie flags, and audit your dependencies. Each layer catches what the previous one missed.

    Try It: Hardening & Sanitization

    Harden php.ini, sanitize inputs, and run through a security checklist

    Try it Yourself ยป
    JavaScript
    // PHP Hardening & Defense in Depth
    console.log("=== Defense in Depth ===");
    console.log();
    console.log("Layer 1: Input Validation (front gate)");
    console.log("Layer 2: Parameterized Queries (database armor)");
    console.log("Layer 3: Output Encoding (display protection)");
    console.log("Layer 4: Security Headers (browser instructions)");
    console.log("Layer 5: Logging & Monitoring (detection)");
    console.log();
    
    console.log("=== php.ini Hardening ===");
    console.log();
    let phpIni = [
      ["expose_php",
    ...

    โš ๏ธ Common Mistakes

    โš ๏ธ
    Trusting "sanitized" data later โ€” data that was safe at insert time may be unsafe in a different context. Always encode for the output context (HTML, URL, JS, SQL).
    โš ๏ธ
    Security through obscurity โ€” hiding PHP version or renaming admin URLs is NOT security. It's a speedbump. Focus on proper authentication, authorization, and input validation.
    ๐Ÿ’ก
    Pro Tip: Run composer audit regularly to find vulnerable dependencies. Automate it in CI/CD so no vulnerable package reaches production.

    ๐Ÿ“‹ Quick Reference โ€” Security

    AttackDefense
    2nd-order SQLiPrepared statements everywhere
    Stored XSShtmlspecialchars() + CSP header
    File inclusionWhitelist allowed files
    Session fixationsession_regenerate_id(true)
    DeserializationUse json_decode(), never unserialize()
    ClickjackingX-Frame-Options: DENY

    ๐ŸŽ‰ Lesson Complete!

    You can now defend against advanced attacks! Next, learn password hashing with Argon2 and secure credential storage.

    Sign up for free to track which lessons you've completed and get learning reminders.

    Previous

    Cookie & Privacy Settings

    We use cookies to improve your experience, analyze traffic, and show personalized ads. You can manage your preferences below.

    By clicking "Accept All", you consent to our use of cookies for analytics and personalized advertising. You can customize your preferences or reject non-essential cookies.

    Privacy Policy โ€ข Terms of Service