这对XSS 100%安全吗? 如果没有,请你提供示例错误的字符串文本,告诉我它为什么不是。
<html>
<body>
<script>
<?php
$bad = "some bad string. please give example text that makes the below unsafe";
echo "var a = ".json_encode($bad).";";
echo "var b = ".json_encode(array($bad)).";";
?>
</script>
</body>
</html>
Thanks.
答案 0 :(得分:4)
简而言之,它是安全的。可能的XSS需要从javascript字符串("
)或脚本(</script>
)中转义。两个字符串都被正确转义:
" becomes \"
</script> becomes <\/script>
这是关于直接注射的部分。您的应用程序应该考虑到某些数组元素可能会丢失。另一种可能性是数组元素不是您期望的类型(例如,数组而不是字符串)
答案 1 :(得分:2)
绝对不是!!!
不要使用json_encode来逃避javascript。
例如:
json_encode <img src=# onerror=alert(1)>
,这将逃避任何事情并输出到浏览器。这是一个xss。
使用htmlspecialchars
代替。