zoukankan      html  css  js  c++  java
  • ASP.NET的页面加密机制【转】

    这里来说明ASP.NET对视图信息【ViewState】的加密功能。
    Page.RegisterRequiresViewStateEncryption
    方法就是将控件注册为需要视图状态加密的控件。如果您要开发用于处理潜在的敏感信息的自定义控件,请调用 RegisterRequiresViewStateEncryption方法向页注册控件,并确保该控件的视图状态信息已加密。
    RegisterRequiresViewStateEncryption方法必须在页生命周期的PreRender阶段中或该阶段之前调用,下面在前面ViewStateControl控件中重写OnPreRender方法并加入视图加密功能,增加后的代码段如下:
    protected override void OnPreRender(EventArgs e)
    {
        this.Page.RegisterRequiresViewStateEncryption();
        base.OnPreRender(e);
    }


    编译控件并在浏览器中重新运行,可以看到发送到客户端的隐藏域视图控件中的值由:

    变成了已经加密的散列码:


    还可以指定视图状态信息的加密模式,通过系统枚举ViewStateEncryptionMode来设置,该枚举可以控制是否加密视图状态信息,它有三个枚举项。


    枚举成员说明
    Auto    如果控件通过调用RegisterRequiresViewStateEncryption方法请求加密,则加密视图状态信息;否则不加密。此值是Page.ViewStateEncryptionMode属性的默认值
    Always    强制加密视图状态信息,而不管有没有调用
    Never    即使控件请求加密,也不加密视图状态信息
    以上枚举项除了在控件中设置外,还可以在配置文件配置应用程序级别,或者在Page页面中配置成页面级别。在控件或页面中应用时仅作如下设置:

    this.Page.ViewStateEncryptionMode = ViewStateEncryptionMode.Auto;
    this.Page.RegisterRequiresViewStateEncryption();

    经过如上设置后,页框架会自动完成加密与解密功能。对该功能再补充两点:
    1.加密视图状态肯定会影响到应用程序的性能,所以使用时要谨慎。
    2.只要页面中有任何一个控件要求对视图状态进行加密,那么页面中所有的视图状态也都将被加密。目前ASP.NET还没有实现针页面中某个控件视图加密功能(在调用时不管是在控件中还是在页面中都是调用页面控件Page的方法RegisterRequiresViewStateEncryption,且该方法没有任何可重载方法)。
  • 相关阅读:
    Loadrunner 9.5_webservice(SOAP)性能测试
    oracle分层查询中的start with和connect by(树结构查询)
    解析Nginx负载均衡
    Nginx+tomcat配置集群负载均衡
    基于Nginx反向代理及负载均衡
    什么是反向代理,如何区别反向与正向代理
    软件测试策略
    软件测试策略的制定过程
    php 模拟get和post提交方法[解决ajax跨域问题]
    解决ajax跨域问题的多种方法
  • 原文地址:https://www.cnblogs.com/myssh/p/1493183.html
Copyright © 2011-2022 走看看