正确转义javascript对象

正确转义javascript对象,javascript,php,json,object,Javascript,Php,Json,Object,给定一个对象:{“key”:“pairs”,“are”:“fun”},它被回送到一个变量中,如constfoo=。逃离物体的正确方法是什么?我已经尝试了encode\u json它会转义所有双引号{“key\”:“pairs\”,“are\”:“fun\”}不允许对象渲染。我还尝试了esc_js,它将双引号转换为”。如何正确转义对象并将对象返回到foo?输出应该是{“key”:“pairs”,“are”:“fun”}任何恶意内容的转义。如果使用wp\u json\u encode生成json字符

给定一个对象:
{“key”:“pairs”,“are”:“fun”}
,它被回送到一个变量中,如
constfoo=。逃离物体的正确方法是什么?我已经尝试了
encode\u json
它会转义所有双引号
{“key\”:“pairs\”,“are\”:“fun\”}
不允许对象渲染。我还尝试了
esc_js
,它将双引号转换为
。如何正确转义对象并将对象返回到
foo
?输出应该是
{“key”:“pairs”,“are”:“fun”}
任何恶意内容的转义。

如果使用
wp\u json\u encode
生成json字符串本身,那么将json分配给浏览器中JavaScript变量的输出应该是相当安全的。
wp_json_encode
函数将转义字符,否则可能允许某人在赋值点插入代码

但是,您也必须考虑如何使用键值对中的值。如果需要一个整数,可以通过

intval
运行该值,或者如果需要稍后注入页面的纯文本,可以通过
esc\u html
运行该值

例如:

<?php
$map = [
        'key' => 'pairs',
        'are' => '"; I document.write(\'fun trying to break out\')',
        'i_am_expecting_plaintext' => esc_html('<a href="evillinkhere">Hello</a><script>evilscript();</script>'),
        'i_expect_an_integer' => intval("90i"), 
        'some_html_allowed' => wp_kses('<a href="http://nisamerica.com/">here</a><script>dangerous();</script>', ['a' => array('href'=>array())]),
];
?>

<script>const foo = <?php echo wp_json_encode($map, JSON_PRETTY_PRINT); ?>;</script>

输出应该是什么可能重复?@JackBashford输出应该是
{“key”:“pairs”,“are”:“fun”}
。刚刚逃过任何恶意内容。@alt rock,那么,什么类型的恶意内容?如果您只需要有效的JSON,只需将键值数组或对象(不是字符串)馈送到
wp_encode_JSON
(即,让它为您构建JSON字符串。)@EPB内容可能受XSS约束
<script>const foo = {
    "key": "pairs",
    "are": "\"; I document.write('fun trying to break out')",
    "i_am_expecting_plaintext": "&lt;a href=&quot;evillinkhere&quot;&gt;Hello&lt;\/a&gt;&lt;script&gt;evilscript();&lt;\/script&gt;",
    "i_expect_an_integer": 90,
    "some_html_allowed": "<a href=\"http:\/\/nisamerica.com\/\">here<\/a>dangerous();"
};</script>