首页新闻找找看学习计划

asp.net 用户私有数据保存

0
悬赏园豆:10 [已关闭问题]

如果使用asp.net设计一个B2C网站,用户的个人数据,例如用户余额 MyBalance使用哪种方式在页面上呈现最安全?我现在用的是ViewState

public decimal MyBalance
    {
        set { ViewState["MyBalance"] = value; }
        get
        {
            if (ViewState["MyBalance"] != null)
            {
                return decimal.Parse(ViewState["MyBalance"].ToString());
            }
            else
            {
                return 0;
            }
        }
    }

通过在Page_Load从数据库中取到值,赋给MyBalance。我想知道还有其它更好方法吗?有时候这个页面可能需要用户的多个数据,如头像、上次登陆时间、积分、昵称。。这样ViewState是不是太多了?

红尘中迷茫的主页 红尘中迷茫 | 初学一级 | 园豆:60
提问于:2009-09-29 15:31
< >
分享
其他回答(2)
0

根本就不应该放在viewstate里,应该每次页面加载时去数据库读取

Gray Zhang | 园豆:17610 (专家六级) | 2009-09-29 16:51
理由是什么?安全还是为了实时性?会员中心每个页面都要体现MyBalance如果每次都要从数据库读,性能是不是很低?
支持(0) 反对(0) 红尘中迷茫 | 园豆:60 (初学一级) | 2009-09-29 18:55
0

为了性能的话,你还是写入Cookies,然后用JS读取并显示吧,在数据更新或Cookies失效时再重新写入,这样性能会比较好。 为了安全性的话就使用Session,几个数值占不了几个字节的内存,同时几万个用户在线都不会有任何感觉的,这样性能也会很好。 两者结合使用更好,比如头像、昵称、登录时间存在Cookies里,积分、余额放在Session中,这里的原则就是高使用频率、高敏感度的数据放入Session,其它的放进Cookies。 需注意的就是,Cookies一般仅供显示,在提交数据时绝对不能从中取值,要从数据库取回,否则会被恶意用户欺骗。

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-09-29 22:56
0

要是用户开两个浏览器去操作。你不就脏读了。

阿龍 | 园豆:268 (菜鸟二级) | 2009-09-30 11:13
能否解释下何为脏读?一个用户打开IE8的2个标签页?还是开2个IE8
支持(0) 反对(0) 红尘中迷茫 | 园豆:60 (初学一级) | 2009-09-30 12:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册