<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>🔐 Authentication & Authorization Vulnerabilities in AI-Generated Code</title>
<style>
  :root{
    --bg:#f9fafc;
    --card:#ffffff;
    --accent:#2563eb;
    --error:#ef4444;
    --safe:#10b981;
    --text:#333;
  }

  body{
    margin:0;
    font-family: "Poppins", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial;
    background: var(--bg);
    color: var(--text);
    line-height:1.5;
  }

  .auth-guide{
    max-width:1400px;
    margin:0 auto;
    padding:20px;
  }

  .auth-guide .title{
    font-size:2rem;
    font-weight:800;
    color:var(--accent);
    margin-bottom:10px;
  }

  .auth-guide .intro{
    background:var(--card);
    border-radius:12px;
    padding:16px;
    margin-bottom:20px;
    box-shadow:0 4px 12px rgba(0,0,0,0.08);
    font-size:1rem;
  }

  .auth-guide .vulnerability{
    background: var(--card);
    border-radius:12px;
    padding:14px;
    margin-bottom:16px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.07);
    transition: transform .18s ease, box-shadow .18s ease;
  }
  .auth-guide .vulnerability:hover{
    transform: translateY(-4px);
    box-shadow: 0 10px 24px rgba(0,0,0,0.10);
  }

  .auth-guide .subtitle{
    margin:0 0 8px 0;
    color:var(--accent);
    font-size:1.4rem;
    font-weight:800;
  }

  .auth-guide .description{
    margin:0 0 6px 0;
    font-size:1rem;
  }

  .auth-guide .detection{
    margin:6px 0 8px 0;
    font-size:1.05rem;
    color:#222;
    font-style:italic;
  }

  .auth-guide .example{
    display:flex;
    gap:14px;
    flex-wrap:wrap;
    margin-top:10px;
  }

  .auth-guide .code, .auth-guide .solution{
    flex:1;
    min-width:320px;
    padding:10px;
    border-radius:8px;
    font-size:0.95rem;
  }

  .auth-guide .code{
    background:#fff5f5;
    border:1px solid var(--error);
  }
  .auth-guide .solution{
    background:#f0fff8;
    border:1px solid var(--safe);
  }

  .auth-guide .example-title{
    margin:0 0 8px 0;
    font-size:1.05rem;
    font-weight:700;
  }

  .auth-guide pre{
    margin:0;
    font-family:"Courier New", monospace;
    font-size:0.9rem;
    overflow-x:auto;
    white-space:pre-wrap;
    word-break:break-word;
  }

  .auth-guide .references{
    margin-top:8px;
    font-size:0.9rem;
    color:#555;
  }

  .auth-guide .services{
    margin-top:6px;
    font-size:0.92rem;
  }
  .auth-guide .services span{
    display:inline-block;
    background:#eef2ff;
    color:var(--accent);
    padding:4px 8px;
    border-radius:6px;
    margin:4px 6px 0 0;
    font-weight:600;
    font-size:0.85rem;
  }

  .auth-guide .links{
    margin-top:8px;
    font-size:1.05rem;
    font-weight:600;
  }
  .auth-guide .links a{
    color:var(--accent);
    text-decoration:none;
  }
  .auth-guide .links a:hover{ text-decoration:underline; }

  .auth-guide .final-section{
    background:var(--card);
    border-radius:12px;
    padding:18px;
    margin-top:30px;
    box-shadow:0 4px 12px rgba(0,0,0,0.1);
  }
  .auth-guide .final-section h2{
    color:var(--accent);
    font-size:1.5rem;
    margin-bottom:10px;
  }

  @media (max-width:760px){
    .auth-guide .example{ flex-direction:column; }
    .auth-guide .code, .auth-guide .solution{ min-width:100%; }
  }
</style>
</head>
<body>
<section class="auth-guide">

  <h1 class="title">🔐 Authentication & Authorization Vulnerabilities in AI-Generated Code</h1>

  <div class="intro">
    <p>
      Authentication and authorization are fundamental for application security. AI-generated code can introduce subtle but serious vulnerabilities, allowing unauthorized access, credential leaks, or bypassing role-based restrictions.
    </p>
    <p>
      The following sections describe the most common issues, explain why AI makes them more likely, provide insecure vs. secure code examples, and list services that can detect and mitigate them.
    </p>
  </div>

  <!-- Missing or Flawed Access Control -->
  <div class="vulnerability">
    <h2 class="subtitle">1. Missing or Flawed Access Control (CWE-284)</h2>
    <p class="description">
      Access control failures occur when software does not correctly enforce permissions, or omits checks entirely. AI-generated code can replicate simplistic tutorials, neglecting edge cases and hierarchical roles. This results in sensitive endpoints being exposed to unauthorized users.
    </p>
    <div class="example">
      <div class="code">
        <h3 class="example-title">Insecure Example (Python Flask):</h3>
        <pre>
@app.route("/admin")
def admin_panel():
    return render_template("admin.html")
        </pre>
      </div>
      <div class="solution">
        <h3 class="example-title">Secure Solution (Python Flask):</h3>
        <pre>
from flask_login import login_required, current_user
@app.route("/admin")
@login_required
def admin_panel():
    if not current_user.is_admin:
        abort(403)
    return render_template("admin.html")
        </pre>
      </div>
    </div>
    <p class="detection"><strong>Detection:</strong> Role-based access audits, SAST, penetration tests.</p>
    <div class="references">
      <strong>References:</strong> <a href="https://owasp.org/www-project-top-ten/2017/A5_2017-Broken_Access_Control.html" target="_blank">OWASP Broken Access Control</a>
    </div>
    <div class="services">
      <strong>Services we offer:</strong>
      <span>SonarQube Setup Assistance</span>
      <span>Source Code Review</span>
    </div>
  </div>

  <!-- Weak or Hard-Coded Credentials -->
  <div class="vulnerability">
    <h2 class="subtitle">2. Weak or Hard-Coded Credentials (CWE-798)</h2>
    <p class="description">
      Hard-coded passwords or weak credentials are easily compromised. AI-generated code may insert example passwords, default tokens, or weak schemes without verifying security. This exposes the system to brute-force, credential stuffing, or code-leak attacks.
    </p>
    <div class="example">
      <div class="code">
        <h3 class="example-title">Insecure Example (Node.js):</h3>
        <pre>
const adminPassword = "12345";
if (req.body.password === adminPassword) grantAccess();
        </pre>
      </div>
      <div class="solution">
        <h3 class="example-title">Secure Solution (Node.js):</h3>
        <pre>
const adminPassword = process.env.ADMIN_PASSWORD;
if (req.body.password === adminPassword) grantAccess();
        </pre>
      </div>
    </div>
    <div class="example">
      <div class="code">
        <h3 class="example-title">Insecure Example (Python):</h3>
        <pre>
PASSWORD = "password123"  # Hard-coded
        </pre>
      </div>
      <div class="solution">
        <h3 class="example-title">Secure Solution:</h3>
        <pre>
import os
PASSWORD = os.environ.get("APP_PASSWORD")
        </pre>
      </div>
    </div>
    <p class="detection"><strong>Detection:</strong> Secret scanning, static code analysis, and source code review for embedded credentials.</p>
    <div class="references">
      <strong>References:</strong> <a href="https://cwe.mitre.org/data/definitions/798.html" target="_blank">CWE-798: Use of Hard-coded Credentials</a>
    </div>
    <div class="services">
      <strong>Services we offer:</strong>
      <span>SonarQube Setup Assistance</span>
      <span>Source Code Review</span>
    </div>
  </div>

  <!-- Broken Access Control -->
  <div class="vulnerability">
    <h2 class="subtitle">3. Broken Access Control (OWASP A5)</h2>
    <p class="description">
      Even when access control mechanisms exist, logic errors or misconfigurations can allow privilege escalation. AI-generated code may overlook subtle conditions, enabling attackers to access admin resources, modify sensitive data, or bypass checks.
    </p>
    <div class="example">
      <div class="code">
        <h3 class="example-title">Insecure Example (PHP):</h3>
        <pre>
if($_SESSION["role"] == "user") {
    include("user_page.php");
} else {
    include("admin_page.php");
}
        </pre>
      </div>
      <div class="solution">
        <h3 class="example-title">Secure Solution (PHP):</h3>
        <pre>
if($_SESSION["role"] === "admin") {
    include("admin_page.php");
} else if($_SESSION["role"] === "user") {
    include("user_page.php");
} else {
    http_response_code(403);
    echo "Access denied";
}
        </pre>
      </div>
    </div>
    <p class="detection"><strong>Detection:</strong> Access control testing, session manipulation tests, code review, and SAST.</p>
    <div class="references">
      <strong>References:</strong> <a href="https://owasp.org/www-project-top-ten/2017/A5_2017-Broken_Access_Control.html" target="_blank">OWASP Broken Access Control</a>
    </div>
    <div class="services">
      <strong>Services we offer:</strong>
      <span>SonarQube Setup Assistance</span>
      <span>Source Code Review</span>
    </div>
  </div>

  <!-- Final Section -->
  <div class="final-section">
    <h2>🔧 How Our Services Help</h2>
    <ul>
      <li><strong>SonarQube Setup Assistance:</strong> Detects missing access checks, weak credentials, and broken role enforcement.</li>
      <li><strong>Source Code Review:</strong> Expert evaluation of AI-generated authentication and authorization logic.</li>
      <li><strong>Software Composition Analysis:</strong> Finds vulnerable dependencies affecting authentication modules.</li>
      <li><strong>Software Licence Analysis:</strong> Ensures compliance for third-party components in AI-generated projects.</li>
    </ul>
  </div>

</section>
</body>
</html>