|
|
|
|
|
by Flimm
1139 days ago
|
|
You do get XSS protection out of the box in most templating languages, though, and PHP is also a templating language. Take this template: <h1>{{ title }}</h1>
In most templating languages, for a title of "<script>alert();</script>", the result will end up being: <h1><script>alert();</script></h1>
In PHP, which is a templating language, the equivalent seems to be: <h1><?php echo $title; ?></h1>
But this will print the title unescaped, which is a security vulnerability, and incorrect. In reality, the equivalent is: <h1><?php echo htmlspecialchars($title); ?></h1>
Now, you could say, don't use PHP as a templating language! But if you're not supposed to use PHP as a templating language, why does it behave as one? This is one of PHP's footguns to be avoided. Personally, I recommend a linter like PHPCS to catch issues like this one. |
|
Nobody writes PHP mixing HTML and PHP anymore, and if you do you should run. Shit code is not unique to PHP and I've seen more than my life's share in JS and Python codebases.