【发布时间】:2011-06-21 04:21:46
【问题描述】:
将变量从一个页面传递到另一个页面时
为了避免用户弄乱 URL 参数值
最好...
1) 通过会话传递变量
2) 将 URL 中的变量与签名一起传递
【问题讨论】:
-
安全是什么意思?
标签: c# asp.net security url url-parameters
将变量从一个页面传递到另一个页面时
为了避免用户弄乱 URL 参数值
最好...
1) 通过会话传递变量
2) 将 URL 中的变量与签名一起传递
【问题讨论】:
标签: c# asp.net security url url-parameters
只要您传递签名,您将值传递到哪里都没有关系,因为您将始终检查签名完整性
我要做的是在会话中传递所有内容(包括签名)。只是为了保持 URL 干净。但这取决于您和您的特定用例。
【讨论】:
如果使用会话,用户无法控制值的内容。
另外,如果你启用了view state encryption,你可以使用视图状态。视图状态的优点是它被本地化到一个页面。这意味着当用户打开您网站的两个选项卡时,变量将本地化到特定选项卡。
请参阅http://www.codeproject.com/KB/viewstate/AccessViewState.aspx,了解如何从另一个页面访问视图状态。
【讨论】:
PreviousPage参考:codeproject.com/KB/viewstate/AccessViewState.aspx。
取决于您的用例。会话在大多数情况下更安全。如果有人可以破坏您的服务器以获取您的会话数据,那么您需要担心不同的事情。但是,如果您将会话数据存储在其他人可以看到的地方,那就太糟糕了;-)。
理论上,URL 签名可能是暴力破解的。由于参数可能很短并且它们有时可能是可预测的,因此可能会给知道加密的人一些攻击点。不过,这并非微不足道。但是,如果安全是您的首选,那么我不会允许这些数据离开您的服务器。
【讨论】:
如果您真的担心用户会发疯并剥离参数,那么您可以使用 Session 状态,但是您可能会丢失历史记录,即 Back Forward 按钮。
第二个选项看起来不错,但如果用户正在剥离东西,您甚至无法确定参数是否存在。
所以两者的混合看起来不错。
【讨论】: