一、背景资料
安全套接层协议(SSL,Security Socket Layer)基于WEB应用的安全协议,它包括:服务器认证、客户认证(可选)、SSL链路上的数据完整性和SSL链路上的数据保密性。SSL主要使用公开密钥体制和X.509数字证书技术保护信息传输的机密性和完整性,它不能保证信息的不可抵赖性,主要适用于点对点之间的信息传输,常用Web Server方式。
SSL安全协议主要提供三方面的服务:
(1) 认证用户和服务器, 使得它们能够确信数据将被发送到正确的客户机和服务器上;
(2) 加密数据以隐藏被传送的数据;
(3) 维护数据的完整性, 确保数据在传输过程中不被改变。
对于电子商务应用来说,使用SSL可保证信息的真实性、完整性和保密性
电子商务网站中,有的页面需要SSL,有的页面不需要SSL,那我们如何能够自动快速在HTTPS和HTTP之间切换呢?
二、解决方案
1、原理
实现IHttpModule
接口
2、效果预览
HTTP页面
点击Login.aspx超链接 自动跳转到Https页面,如下图
点击Contact.aspx链接 又自动切换为http页面,如下图
三、源码分析
使用第三方程序集 WebPageSecurity.dll
四、使用方式
1、添加程序集到Bin文件夹
添加程序集WebPageSecurity.dll到Bin文件夹
2、配置Web.Config
Ø 在< configSections >节点下加入以下配置
<section name="secureWebPages"
type="Ventaur.Web.Security.Configuration.SecureWebPageSettings, WebPageSecurity"/>
Ø 在<configuration>节点下加入以下配置:
<secureWebPages mode="RemoteOnly" ignoreHandlers="WithStandardExtensions">
<files>
<add path="Login.aspx" />
<add path="Legal/Privacy.aspx" />
<add path="Legal/Copyright.aspx" secure="Ignore" />
</files>
<directories>
<!--<add path="/" recurse="True" />-->
<add path="Admin" recurse="True" />
<add path="Admin/Info/" secure="Insecure" />
</directories>
</secureWebPages>
Ø 属性解释
mode | |
On (Default) | 来自各个方向的请求使用SSL |
RemoteOnly | 来自于远程客户的请求使用SSL 网站部署到服务器上使用此属性 |
LocalOnly | 本地调试时使用 |
Off | SSL不可用 |
<files>节点下的超链接 默认是使用SSL加密的。 也可对目录进行加密,也可对某一文件夹下的文件不使用SSL加密(如上配置节)。
Ø 添加Module到Application
在<httpModules>节点下加入以下配置
<add name="WebPageSecurity"
type="Ventaur.Web.Security.SecureWebPageModule, WebPageSecurity" />
Ø 新建基类BasePage.cs 让所有的aspx页面继承于BasePage类
BasePage.cs代码如下
五、总结
至此,无需在IIS上对每个页面进行配置,SSL加密页面与非SSL页面就可以自动转换了。特别是对于有大量SSL页面的时候,此解决方案可供选择。
源代码下载:https://files.cnblogs.com/ywqu/WebPageSecurity_v2_Demo_v31.rar
原文地址:http://www.codeproject.com/KB/aspnet/WebPageSecurity.aspx
最新开源代码 http://www.codeproject.com/Articles/7206/Switching-Between-HTTP-and-HTTPS-Automatically-Ver
转自博客: http://www.cnblogs.com/ywqu/archive/2009/11/28/1612589.html