Использование разных методов побега

8

Я заметил класс, vendor/magento/framework/Escaper.phpкоторый содержит несколько полезных методов безопасности, используемых внутри (главным образом) шаблонов. Некоторые из них довольно распространены ( escapeHtml()), но с некоторыми из них сложно встретиться.

  1. Какой метод и escapeXssInUrl()правда делает?
  2. В случае метода escapeJsQuote()- где можно найти эти цитаты? Только встроенные jsв шаблоны?
  3. У кого-нибудь есть четкое объяснение, когда следует использовать все методы (практические примеры)?
  4. В чем разница между escapeUrl()и escapeXssInUrl()если второе дает нам лучшую безопасность, почему бы не всегда использовать второе вместо экранирования только символов html?
  5. escapeQuote()следует использовать, например, для отображения некоторой переменной в такой ситуации <div value="<?php echo[здесь?] $value?>"></div>?
Бартош Кубицки
источник

Ответы:

3

Большинство функций для мер безопасности против атак XSS.

escapeXssInUrl()Метод Remove javascript:, vbscript:, data:слова из URL и используется как

echo $block->escapeXssInUrl($block->getUrl()) ?>"><?php echo $block->getAnchorTextHtml()

Magento 1 Вы можете избежать кавычек в JavaScript, используя $this->jsQuoteEscape ($item->getName());Mahento 2, вы можете сделать то же самое, используяescapeJsQuote

escapeUrl() фактически использует htmlspecialchars с рекомендуемыми параметрами для экранирования HTML: $result = htmlspecialchars($result, ENT_COMPAT, 'UTF-8', false);

Вы можете найти больше информации в официальной документации Magento 2 .

Кришна иджада
источник
Можете ли вы сказать разницу между escapeUrl()и escapeXssInUr()l? Стоит заметить, чтоThe upcoming release of Magento 2.2 will deprecate these functions. Please check back on this page after the 2.2 release for updated documentation on new escape functions.
Бартош Кубицкий
3

В DevDocs есть полезная запись о безопасности шаблонов: Меры безопасности против атак XSS

Re escapeXssInUrl: функция escapeUrlвызывает escapeXssInUrlвнутренне плюс escapeHtmlпотом. Также Magento использует escapeUrlвнутренне.

Обязательно ознакомьтесь с новыми функциями выхода из Magento 2.2. отсутствует, так как будут приходить новые:

В следующем выпуске Magento 2.2 эти функции будут устаревшими.

Пожалуйста, зайдите на эту страницу после выпуска 2.2 для обновления документации по новым функциям escape.

И вам также может быть интересно ознакомиться с моей презентацией об этом здесь: Безопасная обработка ввода и вывода - Meet Magento Romania 2016

Анна Фёлькл
источник
на самом деле я наблюдал за твоими тренировками на Mage Titans Италия и хотел уточнить некоторые сведения, и это было одной из причин вопроса :)! youtube.com/watch?v=TBSr5Esb-8M Это то, что я заметил, это то, что я тоже заметил escapeXssInUrl()- так что мне следует использовать escapeUrl()insted? «Правила проверки Eav Backedn» - я полагаю, они используются автоматически, а я их уже использую? Или это должно реализовывать их в местах ввода?
Бартош Кубицки
1
Я думаю, что лучше использовать, escapeUrlчем escapeXssInUrlэто называется внутри: github.com/magento/magento2/blob/…
Анна Фёлькл
Я не заметил этого - это правильно!
Бартош Кубицки