【问题标题】:JSP string with "enter" causing problems带有“enter”的 JSP 字符串导致问题
【发布时间】:2012-02-09 14:44:09
【问题描述】:

我有一个应用引擎应用程序,它使用 java servlet 将消息保存到用户发布的数据存储区(使用表单)。

String content = req.getParameter("message");
message.setProperty("content", content);

稍后在 JSP 中处理消息时,如果用户在输入消息时点击“回车”,我会收到运行时错误。

messageArray[<%=i%>]= {
                    content:  "<%=message.getProperty("content")%>",

我该如何解决这个问题?我想保存“输入”以正确显示消息。

谢谢!

【问题讨论】:

  • 向我们展示运行时错误.. 但首先尝试 ""

标签: java javascript string google-app-engine jsp


【解决方案1】:

您将不得不使用 JSON 编码之类的东西来使字符串安全地包含在 JavaScript 源代码中。无论如何,您都应该这样做以防止明显的 XSS 攻击。

JavaScript 不允许在字符串常量中使用原始换行符。如果您愿意,可以创建自己的 EL 函数来清理字符串,将不可打印的字符转换为 \uXXXX 转义,并确保嵌入的引号前面带有反斜杠。

【讨论】:

  • 谢谢尖头。你能分享一些关于 JSON 编码的细节吗?这是我应该在服务器端还是通过 javascript 做的事情?
  • 它必须在服务器端完成。您可以直接使用Google toolkit,也可以将其封装在您自己的 EL 函数中。
  • 将字符串编码为 JSON 对象,然后使用 .String() 提取就足够了吗?
  • 是的,我想是的 - 我从未使用过 Google 工具,但我认为它们就是这样工作的。设置测试用例应该很容易。
  • 所以我设置并测试了它,但它没有工作。我最终做了 Catalin 上面建议的事情。我想保护它免受攻击
猜你喜欢
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2015-01-25
  • 2018-06-17
  • 1970-01-01
相关资源
最近更新 更多