zoukankan      html  css  js  c++  java
  • ViewState

    最近好像很流行在ViewState上面玩花样,有人做了一个ViewState Decoder的东东,可以用软件直接解析出ViewState中的内容

    其实ViewState这个东东要解析出来的确不难,Paul Wilson(也就是做那个模仿ObjectSpaces的ORMapper的)写过一篇言简意赅的文章,里面就讲解了ViewState的结构,并提供了解析ViewState的例子。

    这么看来ViewState其实还是很“脆弱”的,因为能够被很轻易的解析出来,所以很自然的会面临被恶意修改的问题。而且如果页面里面有一个DataGrid之类的控件,ViewState也会膨胀到令人不满意的地步。当然我们可以自己补足它的种种缺点。

    MSDN上很早也有一篇讲解ViewState的文章,并且在文章里面说明了如何加强ViewState的安全性,包括将散列计算值附加在ViewState里面以保证不被篡改,还有给ViewState进行一些加密。

    ViewState默认是保存在客户端页面的一个Hidden Field里面的,自然会增加下载页面和提交页面(别忘了这个Hidden Field里面的内容被下载回来以后,还要被原样的Postback回去)的时间,但干吗不把ViewState直接保存在服务器端呢?比如保存在服务器上的文件里面,或者SqlServer数据库里面,这样就完全的避免了使返回页面体积增大的问题。Dino Esposito在他著名的Cutting Edge专栏里面就写过这么一篇文章,讲解了如何透明的将ViewState保存在服务器端

    如果不想这么麻烦,还有其他方法,比如,将ViewState在服务器端压缩后再写到Hidden Field里面,传回到服务器后再解压缩,这样一样可以很有效的打压ViewState的体积。

    当然,最最简单有效的方法,就是适当的使用控件的EnableViewState属性。
  • 相关阅读:
    《我与我的父辈》影评
    如何进行时间规划?
    内向者相关
    修己 0815
    loj 3102
    StringSequences
    解方程
    problem B
    uoj424 count
    fft相关的复习
  • 原文地址:https://www.cnblogs.com/kaneboy/p/2436772.html
Copyright © 2011-2022 走看看