Bird
Raised Fist0
Cybersecurityknowledge~10 mins

Cross-site scripting (XSS) in Cybersecurity - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to identify the type of attack shown in the script.

Cybersecurity
alert('This is an example of [1] attack');
Drag options to blanks, or click blank then click option'
ASQL Injection
BPhishing
CCross-site scripting (XSS)
DDenial of Service
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing XSS with SQL Injection
Thinking this is a phishing attack
2fill in blank
medium

Complete the sentence to explain how XSS attacks occur.

Cybersecurity
XSS attacks happen when a website [1] user input without proper validation.
Drag options to blanks, or click blank then click option'
Aignores
Bfilters
Cencrypts
Ddisplays
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing 'filters' which would prevent XSS
Choosing 'encrypts' which is unrelated here
3fill in blank
hard

Complete the code that allows XSS by completing the blank.

Cybersecurity
document.getElementById('output').innerHTML = [1];
Drag options to blanks, or click blank then click option'
AuserInput
Bsanitize(userInput)
CescapeHTML(userInput)
Dnull
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing sanitized versions which would fix the issue
Choosing null which would not display anything
4fill in blank
hard

Fill both blanks to create a safe way to display user input and prevent XSS.

Cybersecurity
const safeInput = [1](userInput);
document.getElementById('output').textContent = [2];
Drag options to blanks, or click blank then click option'
AescapeHTML
BsafeInput
CuserInput
Dsanitize
Attempts:
3 left
💡 Hint
Common Mistakes
Using innerHTML instead of textContent
Not processing the input before display
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that filters and safely processes user inputs to prevent XSS.

Cybersecurity
safeInputs = { [1]: [2] for user, input in inputs.items() if '[3]' not in input }
Drag options to blanks, or click blank then click option'
Auser
BescapeHTML(input)
C<script>
Dinput
Attempts:
3 left
💡 Hint
Common Mistakes
Not escaping the input
Not filtering out dangerous tags

Practice

(1/5)
1. What is the main risk of a Cross-site Scripting (XSS) attack?
easy
A. Attackers physically damage the website server
B. Attackers change the website's design without permission
C. Attackers block access to the website by flooding it with traffic
D. Attackers run harmful scripts on a website to steal user data

Solution

  1. Step 1: Understand what XSS does

    XSS allows attackers to inject harmful scripts into websites that run on users' browsers.
  2. Step 2: Identify the main risk

    These harmful scripts can steal sensitive user data like passwords or cookies.
  3. Final Answer:

    Attackers run harmful scripts on a website to steal user data -> Option D
  4. Quick Check:

    XSS risk = harmful scripts stealing data [OK]
Hint: XSS = bad scripts stealing user info on websites [OK]
Common Mistakes:
  • Confusing XSS with server damage
  • Thinking XSS blocks website access
  • Believing XSS changes website design only
2. Which of the following is a correct way to prevent XSS in web code?
easy
A. Allow all user input without filtering
B. Use only images and no text on the website
C. Escape special characters like < and > before displaying user input
D. Disable the website's login page

Solution

  1. Step 1: Identify safe coding practice

    Escaping special characters like < and > stops harmful scripts from running as code.
  2. Step 2: Check other options

    Allowing all input is unsafe, disabling login or using only images does not prevent XSS.
  3. Final Answer:

    Escape special characters like < and > before displaying user input -> Option C
  4. Quick Check:

    Escape input = prevent XSS [OK]
Hint: Escape < and > in input to stop scripts [OK]
Common Mistakes:
  • Allowing all input without checks
  • Thinking disabling login stops XSS
  • Believing images-only stops script attacks
3. Consider this HTML snippet showing user input:
<div>User comment: <script>alert('XSS')</script></div>

What will happen if the website does NOT sanitize this input?
medium
A. The alert box with message 'XSS' will appear to the user
B. The script tags will be shown as plain text
C. The website will crash immediately
D. Nothing will happen; input is safe

Solution

  1. Step 1: Understand unsanitized script tags

    If input is not cleaned, the <script> tag runs as code in the browser.
  2. Step 2: Predict the effect

    The alert('XSS') script runs, showing a popup alert with 'XSS'.
  3. Final Answer:

    The alert box with message 'XSS' will appear to the user -> Option A
  4. Quick Check:

    Unsanitized script runs alert [OK]
Hint: Unsanitized <script> runs code, shows alert [OK]
Common Mistakes:
  • Thinking script tags show as text without sanitizing
  • Assuming website crashes from script
  • Believing nothing happens without sanitizing
4. A developer wrote this code to display user input safely:
output = user_input.replace("<", "<").replace(">", ">")

But users still report XSS attacks. What is the likely problem?
medium
A. The code only replaces < and > but misses other dangerous characters
B. The code should remove all user input instead of replacing
C. The code runs on the server, but XSS happens on the client
D. The code is perfect; users are mistaken

Solution

  1. Step 1: Analyze the replacement method

    Replacing only < and > misses other characters like quotes or script event handlers that can cause XSS.
  2. Step 2: Understand XSS complexity

    Effective XSS prevention requires comprehensive escaping or using security libraries, not just partial replacements.
  3. Final Answer:

    The code only replaces < and > but misses other dangerous characters -> Option A
  4. Quick Check:

    Partial escaping misses XSS vectors [OK]
Hint: Partial escaping misses XSS; escape all special chars [OK]
Common Mistakes:
  • Thinking removing input is only solution
  • Confusing server vs client execution
  • Believing partial replacement is enough
5. A website allows users to post comments that include HTML. To prevent XSS, which combined approach is best?
hard
A. Allow all HTML tags but filter out <script> tags only
B. Use a whitelist to allow only safe HTML tags and escape the rest
C. Escape all user input so no HTML tags run as code
D. Disable comments feature entirely to avoid XSS

Solution

  1. Step 1: Understand risks of allowing HTML

    Allowing all HTML except script tags is risky because other tags or attributes can cause XSS.
  2. Step 2: Identify best practice

    Using a whitelist to allow only safe tags and escaping others balances usability and security.
  3. Step 3: Evaluate other options

    Escaping all input removes HTML functionality; disabling comments reduces user engagement.
  4. Final Answer:

    Use a whitelist to allow only safe HTML tags and escape the rest -> Option B
  5. Quick Check:

    Whitelist safe tags + escape others = best XSS defense [OK]
Hint: Whitelist safe HTML tags, escape others to stop XSS [OK]
Common Mistakes:
  • Allowing all HTML except scripts
  • Escaping all input losing HTML features
  • Disabling comments instead of fixing XSS