这是我在做什么:
<input value="{{ value | strip_html | escape }}">
看看例子,似乎逃脱可能就足够了
https://github.com/Shopify/liquid/search?p=1&q=escape&unscoped_q=escape
但是它不会逃脱<
,>
和"
。
(显然没有转义会导致XSS)
我正在使用最新的Liquidjs
答案 0 :(得分:1)
如果情况有所变化,但是| escape
似乎足够了,并且没有办法排除双引号(""
),我将更新此答案,我只需确保我使用双引号即可。这样就足够了:
<input value="{{ value | escape }}">
请注意,<input value="{{ value }}">
使您接触到XSS vulnerability。
您可以自己查看差异:https://jsfiddle.net/h80radfu/
答案 1 :(得分:0)
其他可能适合您的转义过滤器是:
`public function serialize()
{
return serialize([
$this->id,
$this->username,
$this->password
]);
}`
(或handle
):将字符串格式化为句柄。handleize
:将字符串中所有不安全的URL字符转换为百分比编码的字符。url_encode
:标识URL中不允许使用的字符串中的所有字符,并将这些字符替换为其转义的变体。url_escape
:将URL中不允许的字符串中的所有字符替换为其转义的变体,包括“&”符号。url_param_escape
:将字符串转换为JSON格式。 (注意:简单的变量,例如字符串,会变成用双引号引起来的转义字符串)旋转一下,看看它们是否满足您的要求。
来源: https://help.shopify.com/en/themes/liquid/filters/string-filters https://help.shopify.com/en/themes/liquid/filters/additional-filters
答案 2 :(得分:0)
默认情况下,Shopify将转义大多数值。但是,许多Liquid库(例如Ruby Gem)却没有,并且需要显式使用| escape
过滤器。
所以在Shopify中,这就足够了
<input value="{{ value }}">
对于其他所有Liquid实施方式
<input value="{{ value | escape }}">
您不需要strip_html
,因为如果用户需要在其文本中添加HTML字符,那将破坏您的用户输入。