1

假设我们有输入字段或文本区域,用户可以在其中放置任何内容。这意味着用户可以放在那里:

  • 文本
  • 空白
  • 多行
  • HTML 标签
  • 单引号和双引号
  • 斜线
  • 诸如此类...

我当前的代码是这样做的:<?php $data = addslashes($content_of_input); ?>

不久之后……

<?php
    $php_generate_javascriptArray .='
        javascriptArray[0] ="'.$data.'";
    ';
?>
<script>
    javascriptArray = [];
    <?php echo $php_generate_javascriptArray; ?>
</script>

不幸的是,添加斜杠是不够的——当用户将多行或 HTML 链接放入其中时,Javascript 会中断。有什么办法可以防止这种情况,并且仍然允许 Javascript 数组包含 LINK、MULTIPLE LINES、HTML TAGS吗?我正在寻找一些通用过滤器。

4

2 回答 2

6

json_encode将 PHP 数据结构(或字符串或数字)转换为适当的 JavaScript 数据结构,同时使其安全地注入 HTML 文档中的脚本元素(通过转义斜杠)。

<script>
    var data = <?php echo json_encode($data); ?> ;
</script>
于 2012-09-07T11:24:26.213 回答
1

使用 PHP 函数urlencode(...)base64_encode(...)需要更高级的保护。

我通常使用 urlencode,在 Javascript 端使用 unescape 来解码 URL 格式数据。

于 2012-09-07T11:28:02.963 回答