安全地将变量值从一个页面传递到另一个页面

时间:2011-02-04 06:38:01

标签: c# asp.net security url url-parameters

将变量从一个页面传递到另一个页面时

避免用户弄乱URL参数值

最好是......

1)通过会话传递变量

2)传递URL中的变量以及签名

4 个答案:

答案 0 :(得分:4)

只要您传递签名,您传递值的位置就没关系,因为您将始终检查签名的完整性

我要做的是在会话中传递所有内容(包括签名)。只是为了保持URL清洁。但这取决于您和您的特定用例。

答案 1 :(得分:1)

如果您使用会话,则用户无法控制值的内容。

此外,如果您启用了view state encryption,则可以使用视图状态。视图状态的优点是它本地化为单个页面。这意味着当用户打开网站的两个选项卡时,变量将本地化为特定选项卡。

有关如何从其他页面访问视图状态,请参阅http://www.codeproject.com/KB/viewstate/AccessViewState.aspx

答案 2 :(得分:0)

如果你真的担心用户疯狂并剥离params,那么你可以使用Session状态,但是你可能会丢失历史记录,例如Back Forward按钮。

第二个选项看起来不错,但如果用户正在剥离东西,则无法确定该参数是否存在。

所以两者的组合看起来都不错。

答案 3 :(得分:0)

取决于您的使用案例。在大多数情况下,会话IS更安全。如果有人可能会损害您的服务器以获取会话数据,那么您可能需要担心不同的事情。如果你将会话数据存储在其他人可以看到的地方,那就太糟糕了; - )。

理论上,URL签名可能是暴力强制的。由于参数可能很短并且有时可能是可预测的,因此可能会让知道加密的人有一些攻击点。但这不是微不足道的。但是,如果安全性是您的首选,那么我不允许这些数据离开您的服务器。