Карточка Middle Строки обновлено
Экранирование по контексту
Вопрос
Какой функцией экранировать строку в разных контекстах?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
- HTML-текст и атрибуты: htmlspecialchars($s, ENTQUOTES, 'UTF-8'). - SQL: никак, только подготовленные запросы с параметрами. - Командная строка: escapeshellarg($s). - URL-параметр: rawurlencode или httpbuildquery. - JSON и JS: jsonencode($s, JSONHEXTAG JSONHEXAMP).
Ответ
- HTML-текст и атрибуты:
htmlspecialchars($s, ENT_QUOTES, 'UTF-8'). - SQL: никак, только подготовленные запросы с параметрами.
- Командная строка:
escapeshellarg($s). - URL-параметр:
rawurlencodeилиhttp_build_query. - JSON и JS:
json_encode($s, JSON_HEX_TAG | JSON_HEX_AMP).
Разбор
Экранировать нужно при выводе в конкретный контекст, а не «очищать» ввод заранее.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.