不使用HTTPS並直接將表單提交到站點B的任何原因?
<form action="https://siteb/someaction" method="POST">
<input type="text" name="key1" value="value1" />
<input type="text" name="key2" value="value2" />
<input type="text" name="key3" value="value3" />
<input type="submit" value="Go ahead" />
</form>
如果有任何理由在您要加密的值到一個單一隱藏的輸入並提交包含使用JavaScript這個隱藏字段形式的情況下,唯一的隱藏字段的值將被髮送到網站B.因此,舉例來說,如果你有以下形式:
<form action="http://siteb/someaction" method="POST">
<input type="hidden" name="encrypted" value="some encrypted value" />
</form>
在站點B,你會取這樣的加密值(不使用的FormCollection,相比視圖模型它有點醜陋):
[HttpPost]
public ActionResult SomeAction(string encrypted)
{
// TODO: decrypt the encrypted value here to get the orginal string
...
}
而且一個更優雅的方式將是對站點B和這種模式,會做解密的自定義模型綁定定義的視圖模式,使動作看起來簡直像這樣:
[HttpPost]
public ActionResult SomeAction(SomeViewModel model)
{
// Directly use the model with all the fields in it.
// The custom model binder will take care of the creating it
// from the encrypted request string
...
}
數據如何被加密/解密?你真的需要提交數據客戶端,因此重定向用戶,或者你可以使用Web服務並將其稱爲服務器端? – roryf 2011-05-10 20:38:48
@ roryf使用非對稱加密。它需要提交給一個網頁,而不是一個web服務。 – 2011-05-10 20:40:51