【问题标题】:Safely pass string to javascript安全地将字符串传递给 javascript
【发布时间】:2013-02-18 20:55:15
【问题描述】:

我正在尝试将一个字符串从我的 java 代码传递给 javascript,如下所示:

myData.data = "${data.myString}";

如果myString 包含",则会中断

我尝试存储一个javascript安全字符串,只是将"替换为\",但是当我在我的jsp中使用myString时,我得到一个丑陋的输出,显示\"而不是"

什么是安全传递字符串而不弄乱我的其余输出的最佳方法。

【问题讨论】:

  • 不是一个强大的解决方案,但您可以使用单引号代替吗?
  • 一种可能性是对其进行base64编码?
  • 您是否尝试使用 '(单引号)而不是 "(双引号)。您可能还需要转义。
  • 单引号引起同样的问题,这些是用户提交的可以合法包含'和"的cmets
  • 你试过用 " 替换吗?

标签: java javascript jstl


【解决方案1】:

将其编码成JSP中的html:

<input id="test_hide" type="hidden" value="${URIUtil.encodeAll("http://www.google.com?q=a b","UTF-8")}">

然后在 JavaScript 中:

 myData.data = decodeURIComponent(document.getElementById('test_hide').getAttribute('value'));

Java - Convert String to valid URI object

【讨论】:

  • 是的,我原来有过。我对 URLEncoder 的使用很模糊 :) 谢谢
【解决方案2】:

&amp;quot; 替换双引号应该可以工作

【讨论】:

    【解决方案3】:

    一个糟糕的解决方案:

    检查你的字符串是否有双引号,如果是则使用

    myData.data = '${data.myString}';
    

    如果它包含单引号使用

    myData.data = "${data.myString}";
    

    如果你同时有单引号和双引号,这将爆炸。

    一个很好的解决方案:

    随便用

    &quot;
    

    【讨论】:

      猜你喜欢
      • 2019-02-05
      • 1970-01-01
      • 2016-06-01
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      相关资源
      最近更新 更多