Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用液体设置输入值最安全的方法是什么?_Javascript_Shopify_Xss_Liquid - Fatal编程技术网

Javascript 用液体设置输入值最安全的方法是什么?

Javascript 用液体设置输入值最安全的方法是什么?,javascript,shopify,xss,liquid,Javascript,Shopify,Xss,Liquid,以下是我正在做的: <input value="{{ value | strip_html | escape }}"> 看看这些例子,逃跑似乎就足够了 <input value="{{ value }}"> 但是它并没有逃逸,比如“ (显然没有逃逸导致XSS) 我正在使用最新的liquidjs其他符合您需要的转义过滤器包括: handle(或handleize):将字符串格式化为句柄 url\u encode:将字符串中的任何url不安全字符转换为百分比编码字

以下是我正在做的:

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

看看这些例子,逃跑似乎就足够了

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

但是它并没有逃逸
,比如

(显然没有逃逸导致XSS)


我正在使用最新的liquidjs

其他符合您需要的转义过滤器包括:

  • handle
    (或
    handleize
    ):将字符串格式化为句柄
  • url\u encode
    :将字符串中的任何url不安全字符转换为百分比编码字符
  • url\u escape
    :标识url中不允许的字符串中的所有字符,并用其转义变体替换这些字符
  • url_param_escape
    :将url中不允许的字符串中的所有字符替换为其转义变体,包括符号(&)
  • json
    :将字符串转换为json格式。(注意:简单变量,如字符串,将变成用双引号括起来的转义字符串)
试一试,看看它们是否符合你的要求

资料来源:

其他适合您需要的转义过滤器包括:

  • handle
    (或
    handleize
    ):将字符串格式化为句柄
  • url\u encode
    :将字符串中的任何url不安全字符转换为百分比编码字符
  • url\u escape
    :标识url中不允许的字符串中的所有字符,并用其转义变体替换这些字符
  • url_param_escape
    :将url中不允许的字符串中的所有字符替换为其转义变体,包括符号(&)
  • json
    :将字符串转换为json格式。(注意:简单变量,如字符串,将变成用双引号括起来的转义字符串)
试一试,看看它们是否符合你的要求

资料来源:

如果情况发生变化,我会更新这个答案,但似乎
| escape
已经足够了,而且没有双引号就无法摆脱双引号属性(
),我只需要确保我使用了双引号。所以这应该足够了:

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

要清楚的是,
会让你暴露在一个危险的环境中


你可以自己看到不同之处:

如果情况发生变化,我会更新这个答案,但似乎
| escape
就足够了,没有双引号就无法摆脱双引号属性(
“”
),我只需要确保我使用了双引号。所以这应该足够了:

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

要清楚的是,
会让你暴露在一个危险的环境中


您可以自己看到不同之处:

Shopify默认情况下会逃逸大多数值。但是,许多液体库(如Ruby Gem)不会,并且需要显式使用
|escape
过滤器

所以在Shopify中,这就足够了

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

对于每一个其他的液体实现,请执行以下操作

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


您不需要
strip_html
,因为如果用户需要在文本中添加html字符,这将损坏您的用户输入。

Shopify默认情况下将转义大多数值。但是,许多液体库(如Ruby Gem)不需要,并且需要显式使用
转义
过滤器

所以在Shopify中,这就足够了

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

对于每一个其他的液体实现,请执行以下操作

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


您不需要
strip_html
,因为如果用户需要在文本中输入html字符,这将损坏您的用户输入。

该值是以前提供的自由格式用户输入,handle/url encode/escape/etc./json将更改结果值。我只想转义该值,这样就不会出现XSS。不会出现XSS原始表单输入。它被视为原始文本,不会被浏览器中的HTML解析器解释。当您在HTML元素中显示用户输入时,您只需要转义用户输入。然后,如果您只关心双引号(
),只需使用
{value | replace:''',''}
,否?另外,再次检查
escape
是否没有发挥作用-现在我想起来了,我看到有相当多的网站使用了类似
data something=“{{complex|u thing | escape}}”
的结构,引号确实得到了正确的转义。浏览器的开发工具可能会显示解析的值,即使底层HTML实际上是转义的。该值是以前提供的自由格式用户输入,handle/url encode/escape/etc./json会更改结果值。我只想转义这个值,这样就没有XSS了。在原始表单输入上就没有XSS了。它被视为原始文本,不被浏览器中的HTML解析器解释。当您在HTML元素中显示用户输入时,只需转义用户输入。然后,如果您只关心双引号(
),只需使用
{{value | replace:''','''}}
,没有?另外,仔细检查一下
escape
是否没有发挥作用-现在我想起来了,我看到有相当多的网站使用了类似
data something=“{{complex|u thing | escape}”的结构“
,引号确实会正确转义。浏览器的开发工具可能会显示解析的值,即使底层HTML实际上已转义