Why strip_tags() Is Not Enough for XSS Protection

Punyapal Shah
strip_tags() removes HTML elements but fails to sanitize inline attributes or malformed HTML payload vectors. Use HTMLPurifier for rich text input.

A common security misconception in PHP is relying on strip_tags() to sanitize user-submitted rich text. It allows attribute payloads like onload= or javascript: URIs through if allowed tags are specified.

use HTMLPurifier;

$purifier = new HTMLPurifier();
$cleanHtml = $purifier->purify($input);
  • strip_tags() does not validate tag attributes or execution vectors
  • Always escape plain text with e() or Blade's {{ $var }}
  • For user-submitted rich text, use reliable HTML sanitizers like HTMLPurifier
Tags: #PHP #Security #XSS
Share on X

// Found an issue or want to contribute a tip? github.com/MrPunyapal/tips