zoukankan      html  css  js  c++  java
  • ASP.NET中的ViewState内容格式分析

    声明:这个随笔没有什么技术价值,纯粹好奇之作


    一直对ASP.NET生成的页面中一大串的ViewState内容比较好奇,不过懒于去反编译ASP.NET。这个东西形如:

    <input type="hidden" name="__VIEWSTATE" value="dDw2Mjg5MzIzMTI7dDxwPGw8VHlwZUlEO0FjdGlvbklEO0tleXdvcmRzO1Nob3dDb2xvcjtTb 这里省略n多字符"


    刚才心血来潮,稍微分析了一下这个东西,初步结论:

    1、得益于平时比较喜欢研究文件/流/字符串格式,很快便判断也证实了__VIEWSTATE的Value是经过BASE64编码的;

    2、用BASE64解码可以得出形如:
    t<628932312;t<p<l<TypeID;ActionID;Keywords;ShowColor;SortExp;>;l<-2;-2;\e;True;CreatedDate;>>;l<i<1>;>;l<t<;l<i<5>;i<9>;i<19>;i<21>;i<23>;i<25>;i<29>;>;l<t<t<;t<i<11><@0<p<p<l<CurrentPageIndex;PageSize;PageCount;_!ItemCount;_!DataSourceItemCount;DataKeys;>这里省略了n多字符。可以看出这个编码是使用了关键字符“<”、“>”、“;”来作为分隔符号,大家还可以看见前面的“TypeID;ActionID;Keywords;ShowColor;SortExp”就是我在后代码中用到的ViewState:TypeID、ActionID、Keywords、ShowColor、SortExp。假如我使用了敏感字符作为名称呢?譬如ViewState("<a>;"),不知道会怎样?应该会先编码,微软的人不会差到这么基本的问题都没有考虑。

    先分析到这里,上班:)今晚继续。

  • 相关阅读:
    利用bat合并两个hex文件
    Laravel中使用自己的类库三种方式
    Carbon 的 diffForHumans 方法
    5 个 Laravel Eloquent 小技巧
    laravel 批量更新
    laravel 打印sql语句
    PHP获取客户端的IP地址
    PHP跨域访问
    解析URL参数
    转: 雅虎35条优化黄金守则
  • 原文地址:https://www.cnblogs.com/unruledboy/p/59854.html
Copyright © 2011-2022 走看看