Bird
Raised Fist0
HLDsystem_design~5 mins

SQL injection and XSS prevention in HLD - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is SQL Injection?
SQL Injection is a security vulnerability where attackers insert malicious SQL code into input fields to manipulate the database and access or modify data without permission.
Click to reveal answer
beginner
How can parameterized queries help prevent SQL Injection?
Parameterized queries separate SQL code from data inputs, so user inputs are treated only as data, not executable code, preventing attackers from injecting harmful SQL commands.
Click to reveal answer
beginner
What is Cross-Site Scripting (XSS)?
XSS is a security flaw where attackers inject malicious scripts into web pages viewed by other users, allowing theft of information or control over user actions.
Click to reveal answer
intermediate
Name two common methods to prevent XSS attacks.
1. Escaping user inputs before displaying them on web pages. 2. Using Content Security Policy (CSP) headers to restrict script execution.
Click to reveal answer
beginner
Why is input validation important in preventing SQL Injection and XSS?
Input validation ensures only expected and safe data is accepted, reducing the chance of malicious code entering the system and causing harm.
Click to reveal answer
Which technique is most effective in preventing SQL Injection?
AUsing parameterized queries
BEncrypting the database
CUsing complex passwords
DDisabling user input
What does XSS stand for?
AExtra Secure Script
BCross Server Security
CCross System Sync
DCross-Site Scripting
Which of these helps prevent XSS attacks?
AEscaping user inputs
BUsing SQL queries
CDisabling HTTPS
DIncreasing server RAM
What is a Content Security Policy (CSP)?
AA password policy
BA database encryption method
CA browser security feature to control resources loaded
DA network firewall
Why should user inputs be validated?
ATo speed up the server
BTo ensure data is safe and expected
CTo increase database size
DTo allow all inputs
Explain how parameterized queries prevent SQL Injection attacks.
Think about how the database understands commands versus data.
You got /3 concepts.
    Describe two ways to prevent Cross-Site Scripting (XSS) in web applications.
    Consider both input handling and browser security settings.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which of the following is the best way to prevent SQL injection attacks in a web application?
      easy
      A. Escape HTML tags in user input
      B. Use parameterized queries or prepared statements
      C. Disable JavaScript in the browser
      D. Use client-side validation only

      Solution

      1. Step 1: Understand SQL injection cause

        SQL injection happens when user input is directly included in SQL queries without safe handling.
      2. Step 2: Identify prevention method

        Parameterized queries separate code from data, preventing attackers from injecting SQL commands.
      3. Final Answer:

        Use parameterized queries or prepared statements -> Option B
      4. Quick Check:

        SQL injection prevention = parameterized queries [OK]
      Hint: Always separate code and data with parameterized queries [OK]
      Common Mistakes:
      • Relying only on client-side validation
      • Escaping HTML instead of SQL input
      • Disabling JavaScript does not stop SQL injection
      2. Which syntax correctly uses a parameterized query to prevent SQL injection in a typical SQL library?
      easy
      A. cursor.execute('SELECT * FROM users WHERE name = ?', (user_input,))
      B. cursor.execute('SELECT * FROM users WHERE name = ' + user_input)
      C. cursor.execute(f'SELECT * FROM users WHERE name = {user_input}')
      D. cursor.execute('SELECT * FROM users WHERE name = ' + str(user_input))

      Solution

      1. Step 1: Identify parameterized query syntax

        Parameterized queries use placeholders like '?' and pass parameters separately to avoid injection.
      2. Step 2: Check each option

        cursor.execute('SELECT * FROM users WHERE name = ?', (user_input,)) uses '?' placeholder and passes parameters as a tuple, which is correct syntax.
      3. Final Answer:

        cursor.execute('SELECT * FROM users WHERE name = ?', (user_input,)) -> Option A
      4. Quick Check:

        Parameterized query syntax = cursor.execute('SELECT * FROM users WHERE name = ?', (user_input,)) [OK]
      Hint: Look for placeholders and separate parameter tuple [OK]
      Common Mistakes:
      • Concatenating strings directly with user input
      • Using f-strings without sanitization
      • Passing parameters inside the query string
      3. Given the following code snippet, what will be the output if user_input = "" and the output is rendered in HTML without escaping?
      def render_comment(user_input):
          return f"<p>{user_input}</p>"
      
      print(render_comment(user_input))
      medium
      A. SyntaxError due to unescaped quotes
      B. <p>&lt;script&gt;alert('XSS')&lt;/script&gt;</p> (script shown as text)
      C. <p><script>alert('XSS')</script></p> (script runs in browser)
      D. Empty output because script tags are removed

      Solution

      1. Step 1: Understand output without escaping

        The function inserts raw user input inside paragraph tags without escaping HTML special characters.
      2. Step 2: Predict browser behavior

        Browser interprets <script> tags and runs the alert, causing an XSS attack.
      3. Final Answer:

        <p><script>alert('XSS')</script></p> (script runs in browser) -> Option C
      4. Quick Check:

        Unescaped HTML input = script runs [OK]
      Hint: Unescaped HTML input allows scripts to run [OK]
      Common Mistakes:
      • Assuming script tags are automatically escaped
      • Confusing HTML escaping with SQL escaping
      • Expecting syntax errors from user input
      4. A developer wrote this code to prevent XSS:
      def safe_render(user_input):
          return f"<p>{user_input.replace('<', '<').replace('>', '>')}</p>"

      But users report that some scripts still run. What is the likely cause?
      medium
      A. The replace method does not work on strings
      B. The function should remove all HTML tags instead of replacing
      C. The code should use double quotes instead of single quotes
      D. Only replacing < and > is insufficient; other characters like quotes must be escaped

      Solution

      1. Step 1: Analyze current escaping

        The code replaces only < and > but leaves quotes and other characters unescaped.
      2. Step 2: Understand XSS vectors

        Attackers can use quotes or other entities to break out of attributes or inject scripts.
      3. Final Answer:

        Only replacing < and > is insufficient; other characters like quotes must be escaped -> Option D
      4. Quick Check:

        Partial escaping = incomplete XSS prevention [OK]
      Hint: Escape all special HTML chars, not just < and > [OK]
      Common Mistakes:
      • Thinking replacing < and > is enough
      • Believing string replace fails silently
      • Ignoring quotes and ampersands in input
      5. You are designing a web app that stores user comments and displays them safely. Which combination of techniques best prevents both SQL injection and XSS attacks?
      hard
      A. Use parameterized queries for database and escape HTML output with a Content Security Policy (CSP)
      B. Sanitize user input by removing all special characters before storing
      C. Use client-side JavaScript to validate input and disable scripts in browser settings
      D. Store raw input and rely on HTTPS to secure data transmission

      Solution

      1. Step 1: Prevent SQL injection

        Use parameterized queries to safely handle user input in database commands.
      2. Step 2: Prevent XSS attacks

        Escape HTML output when rendering user content and enforce a Content Security Policy to restrict script execution.
      3. Final Answer:

        Use parameterized queries for database and escape HTML output with a Content Security Policy (CSP) -> Option A
      4. Quick Check:

        SQL injection + XSS prevention = parameterized queries + escaping + CSP [OK]
      Hint: Combine safe DB queries with output escaping and CSP [OK]
      Common Mistakes:
      • Removing all special characters breaks user input
      • Relying only on client-side validation
      • Ignoring output escaping and security headers
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard