【问题标题】:Sending xml data in hidden field.Is it safe?在隐藏字段中发送 xml 数据。安全吗?
【发布时间】:2016-09-13 05:22:24
【问题描述】:

我有一个 html 表单:

<form>
<input type="hidden" id="hiddenField"/>
...Other form fields
</form>

在这个表单中,我想用 xml 数据设置一个隐藏字段。 任何人都可以建议是否可以直接使用 xml 数据设置隐藏字段。 即在我的javascript函数中直接使用xml设置隐藏字段是否安全:$(#hiddenFiled).val(xml);并在我的java servlet中获取xml?请建议。

【问题讨论】:

    标签: java html xml


    【解决方案1】:

    不,你不能在没有编码的情况下保留 xml 您可以选择任一

    var stringValue=escape(xml); 
    var xmlValue= unescape (stringValue)
    

    在 JavaScript 中

    尽管这些方法在较新的版本中已被贬低,因此您可以在另一个库中找到它,例如 http://underscorejs.org/#escapeUnderScoreJs

    如果 XML 包含敏感信息,也不要将其保留在隐藏字段中。

    【讨论】:

    • 感谢您的回复。不,xml 不包含任何敏感信息。如果我理解正确,您的建议是转义 xml,然后将其设置在隐藏字段中,例如: var escapedXml=escape(xml); $(#hiddenFiled).val(escapedXml);请确认我是否理解正确。从request.getParameter获取后,我们还需要一些机制在servlet中对其进行解码吗?
    【解决方案2】:

    隐藏的表单字段不用于会话跟踪。

    我们有两种会话跟踪机制,它们是 cookie 和 URL 重写,对于那些在浏览器中没有启用 cookie 的人来说是最新的,我只能理解当你有你的时在隐藏字段中发送会话 ID自己的会话跟踪器,并且没有使用您的服务器容器(HttpSession 和所有)中已经存在的那个,但是为什么要重新发明轮子呢?

    隐藏字段用于在页面之间传递信息,有时我使用 a 但我显然不希望向用户显示该信息

    【讨论】:

      【解决方案3】:

      在没有javascript 或浏览器插件的情况下发布 XML 是不可能的。您不应该直接将其作为表单参数发送。 See this answer for more info:.

      在发送到服务器时使用 encode 它们并在服务器端使用 decode 它们的库。

      Underscore.js 提供了这样的功能。见documentation

      escape_.escape(string)
      转义字符串以插入 HTML,替换 &、、"、` 和 ' 字符。

      _.escape('Curly, Larry & Moe');  
      => "Curly, Larry &amp; Moe"
      

      unescape_.unescape(string)
      转义的反义词,将 &、、"、` 和 ' 替换为未转义的对应项。 p>

      _.unescape('Curly, Larry &amp; Moe');
      => "Curly, Larry & Moe"
      

      但是,请记住,浏览器通常会限制您可以通过 GET 请求发送的数据量(大约 255 个字节)。因此,使用POST 而不是GET 总是一个不错的选择,即使在发送编码的XML 时也是如此。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-12
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-29
        • 2023-03-28
        • 2019-04-08
        相关资源
        最近更新 更多