如何逃避json,就像你逃避输出以防止XSS一样

时间:2013-02-22 16:59:33

标签: php jquery json

当你转义输出时,你这样做是为了防止XSS:

      echo htmlentities( $variable );

我们是否也需要转义json对象来阻止XSS?:

      echo htmlentities( json_encode( $variable ) );

或者没有必要,请有人告诉我。如果不需要,请解释原因?

JQuery的:

在ajax的成功部分内:

它将在$ .each循环中,内容将是:

    $('#textbox').attr( 'value', variable ); 

2 个答案:

答案 0 :(得分:1)

  

是的,这是输入类型文本的正确值属性(文本框html)。

您需要通过htmlspecialchars运行它(您也可以使用htmlentities,但这太过分了)。

HTML中具有特殊含义的字符(例如"')可能会出现在JSON文本中,并且(如果未转义)将作为“属性值结束”字符在由匹配角色。

<input value="{ "foo": 1 }">
                 ^^^^^^^^^^
                 this is an error

答案 1 :(得分:0)

没有。 JSON编码输出是安全的。所有可能有害的字符或输入类型都可以正确转义或引用。