正确转义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": "<a href="evillinkhere">Hello<\/a><script>evilscript();<\/script>",
"i_expect_an_integer": 90,
"some_html_allowed": "<a href=\"http:\/\/nisamerica.com\/\">here<\/a>dangerous();"
};</script>