Карточка 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 ошибок.