XSS:使用PHP的json_encode创建一个javascript对象

use*_*289 5 javascript php xss json

这对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.
Run Code Online (Sandbox Code Playgroud)

Lek*_*eyn 5

简而言之,它是安全的。可能的 XSS 需要从 javascript 字符串 ( ") 或脚本 ( </script>) 中转义。两个字符串都被正确转义:

"          becomes  \"
</script>  becomes  <\/script>
Run Code Online (Sandbox Code Playgroud)

这是关于直喷的部分。您的应用程序应该考虑到某些数组元素可能会丢失。另一种可能性是数组元素不是您期望的类型(例如,数组而不是字符串)