2016-09-13 35 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總是一個很好的選擇。