Что выведет код Junior Сессии и безопасность обновлено
Что делает htmlspecialchars
Вопрос
Что выведет скрипт (PHP 8.3)? По строке на каждый вывод.
<?php
$s = '<a href="x" onclick=\'go()\'>Tom & Jerry</a>';
echo htmlspecialchars($s), "\n";
echo htmlspecialchars("O'Reilly", ENT_NOQUOTES), "\n";
echo strip_tags('<b>bold</b><script>x()</script>'), "\n";
var_dump(password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)));
var_dump(hash_equals('abc', 'abd'));
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: <a href="x" onclick='go()'>Tom & Jerry</a>, O'Reilly, boldx(), bool(true), bool(false). С PHP 8.1 флаги по умолчанию ENTQUOTES ENTSUBSTITUTE ENTHTML401, поэтому экранируются и двойные, и одинарные кавычки (&039;).
Что выведет
<a href="x" onclick='go()'>Tom & Jerry</a>
O'Reilly
boldx()
bool(true)
bool(false)
Разбор
С PHP 8.1 флаги по умолчанию ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, поэтому экранируются и двойные, и одинарные кавычки ('). С ENT_NOQUOTES апостроф остаётся. strip_tags удаляет теги, но оставляет их содержимое, включая текст скрипта: это не защита от XSS. Хеш проверяется password_verify, а hash_equals сравнивает строки за постоянное время.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.