安全地将数据从页面传递到页面

时间:2009-11-20 09:20:11

标签: asp.net security tampering

我期待一种方法可以安全地将数据从一个页面传递到另一个页面,并避免因为可能被篡改。


  • 解决问题的最佳方法是将敏感数据保存在数据库服务器上。
  • 或者在数据库服务器上使用会话保持。
  • 或者在数据库服务器上保留数据的任何方法。

事实上,由于性能,我不想使用这样的方法。

我不知道以下是否安全,但我想测试它。(但我不知道是否有可能)

我想在加密模式的viewstate中保存敏感数据。例如,在tespage1.aspx中检索并从testpage2.aspx中检索。

我怎么能这样做,安全吗?

提前致谢

3 个答案:

答案 0 :(得分:2)

创建一个自定义类来保存您的敏感数据。

class myCustomeClass
{
    int id;
    string name;
    currency amount;

    '... properties to access

    '... custom methods

    '... etc.
}

如果你真的是偏执狂包含加密/解密方法...... 现在,设置数据的字段和属性。 接下来,加密(可选)。 把东西放在缓存中......

Cache.Insert("MySensitiveData", myCustomClass, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);

重定向到您的其他页面

在Page_Load事件中

MyCustomClass oSensitiveData;

if (!IsPostBack)
{
    oSensitiveData = (myCustomeClass)Cache["MySensitiveData"];
}

就是这样,你有你的数据,如果你加密它,你现在需要解密它......

有很多种方法可以做到这一点,但这个方法适用于我相对较小的数据集。如果您正在处理大量数据,那么您可能希望使用诸如Sql Sever,mySql等数据库进行探索,以充当数据的“缓存”。

答案 1 :(得分:0)

它始终建议敏感数据,应该在服务器中不与客户端一起使用。您嵌入页面的任何内容都是一种责任。由于您排除了所有服务器端选项,因此ViewState应该是我认为最好的选择,因为它的加密。您还可以使用Page.enableviewstatemac属性进行安全的视图状态传输。

答案 2 :(得分:0)

这里有两个问题......一,ViewState不安全。默认情况下,它只是一个简单的BASE64编码。将此数据保存在服务器上,期间。别的什么都在惹麻烦。二,当你去一个新的页面时,ViewState会丢失,这是有充分理由的。这不是您将数据从一个aspx页面传递到另一个页面的方式。

此外,出于性能原因选择ViewState over Session在大多数情况下都没有意义。使用InProc会话或缓存比ViewState更有效。