2016-09-13 36 views
0

我有一个HTML表单:在隐藏字段中发送xml数据。是否安全?

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

在这种形式我想设置一个隐藏字段使用XML数据。 任何人都可以建议是否可以直接用xml数据设置隐藏字段。 即在我的JavaScript函数是安全的直接设置隐藏字段与XML如:$(#hiddenFiled).val(xml);并得到我的Java Servlet中的XML?请建议。

回答

0

不,你不能让XML编码没有你 可以选择在JavaScript或者

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

虽然这些方法已经在新版本中已贬值了,所以你可以在样http://underscorejs.org/#escape另一个库找到它UnderScoreJs

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

+0

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

0

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

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

隐藏字段是页面之间传递信息,有时我用,我显然不希望向用户显示

0

发布的XML信息,而无需javascript或浏览器插件是不可能的。您不应该直接将它作为表单参数发送。 See this answer for more info:

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

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

escape_.escape(字符串)
转义用于插入到HTML字符串,替换&,<,>,”,`,和'字符

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

unescape_.unescape(字符串)
逃生的反义词取代了&,<,>,",`和'以及它们的非转义对应物。

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

不过,千万记住,通常浏览器有过的数据,你可以通过GET要求(约255字节)发送量限制。因此,即使在发送编码的XML时,使用POST而不是GET总是一个很好的选择。