Какой самый безопасный способ установить значение ввода с жидкостью? - PullRequest
0 голосов
/ 17 апреля 2019

вот что я делаю:

<input value="{{ value | strip_html | escape }}">

глядя на примеры, кажется, что побега может быть достаточно

https://github.com/Shopify/liquid/search?p=1&q=escape&unscoped_q=escape

, но, к примеру, <, > и " не удаются.

(очевидно, что спасение не приводит к XSS)

Я использую последнюю версию liquidjs

Ответы [ 3 ]

1 голос
/ 17 апреля 2019

Я обновлю этот ответ, если что-то изменится, но кажется, что | escape достаточно, и нет способа выйти из двойных кавычек ("") без двойных кавычек, мне просто нужно сделать уверен, что я использую двойные кавычки. так что этого должно быть достаточно:

<input value="{{ value | escape }}">

, чтобы быть ясным <input value="{{ value }}"> подвергает вас XSS уязвимости .

Вы можете увидеть различия для себя: https://jsfiddle.net/h80radfu/

0 голосов
/ 17 апреля 2019

Shopify по умолчанию скрывает большинство значений.Однако, многие библиотеки Liquid (например, Ruby Gem) не требуют и требуют явного использования фильтра | escape.

Так что в Shopify этого будет достаточно

<input value="{{ value }}">

Для каждогодругая реализация Liquid делает

<input value="{{ value | escape }}">

Вам не нужен strip_html, так как он изменит ваш пользовательский ввод, если пользователь должен вставить символы HTML в свой текст.

0 голосов
/ 17 апреля 2019

Другие экранирующие фильтры, которые могут удовлетворить ваши потребности:

  • handle (или handleize): форматирует строку в дескриптор.
  • url_encode: конвертируетлюбые небезопасные символы в строке в символах в процентах.
  • url_escape: идентифицирует все символы в строке, которые не разрешены в URL-адресах, и заменяет символы на их экранированные варианты.
  • url_param_escape: заменяет все символы в строке, которые не разрешены в URL, их экранированными вариантами, включая амперсанд (&).
  • json: преобразует строку в формат JSON.(Примечание: простые переменные, такие как строки, становятся экранированными строками, заключенными в двойные кавычки)

Пропустите их и посмотрите, соответствует ли какая-либо из них вашим требованиям.

Источники: https://help.shopify.com/en/themes/liquid/filters/string-filters https://help.shopify.com/en/themes/liquid/filters/additional-filters

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...