.net - 为特定页面禁用 ssl

标签 .net ssl iis-6

环境
IIS 6
.NET 3.5(网络表单

出于各种原因,我想在页面级别关闭 SSL。这是最佳做法吗?这样做时我应该注意什么?什么被认为是最安全的方法?我打算这样做的方式是

右键单击页面->导航到属性->单击文件安全->然后取消选中需要安全通道。

这会影响其他页面吗?任何帮助都会非常感谢

最佳答案

注意:我正在使用 .aspx 来表示 ASP.Net 页面,但通常应适用以下内容。

即使您取消选中 require secure channel,我相信它仍会使用安全通道(因为您告诉它 SSL 不是 required,但这并不意味着它仍然不能使用SSL)。例如,如果您从 secure_page1.aspx 导航到 unsecure_page2.aspx,它将默认通过 HTTPS(或第一页使用的任何协议(protocol))导航,即,当您单击特定页面时,它不会自动从 HTTPS 切换到 HTTP关联。唯一的方法是使用绝对 url 链接,即在 https://www.mydomain.com/secure_page1.aspx 上,您在页面上有一个链接:

<a href="http://www.mydomain.com/unsecure_page2.aspx">Link to unsecure page</a>

就我个人而言,如果网站需要任何 SSL 页面,我建议整个网站或网站的整个部分(例如订购系统)都采用 SSL 而不是仅需要安全的个别页面。这里的一个大问题是要记住,在用户输入表单之前,任何将发送关键信息的页面都必须是 SSL 。例如,不要将 Login.aspx 设为非 SSL,然后将 Login-Post.aspx(表单后操作 url)设为 SSL,因为那样不安全。

我必须承认我做过一个项目,其中的网站是 HTTP 和 HTTPS 的混合体,我们想强制用户的浏览器使用我们想要的协议(protocol)。这样做的主要原因是 HTTP 页面在服务器和浏览器上都比 HTTPS 更高效,因为加密会增加每个请求的开销。我对该项目使用了以下(hackish)方法:

  1. 每个重定向/链接都通过一个辅助方法进行引导,该方法知道哪些页面应该被视为 HTTP 还是 HTTPS(这仅在您使用某些服务器端代码时有效,否则您将不得不更新所有手动链接。)
  2. 如果从同一协议(protocol)导航到同一协议(protocol)(HTTP -> HTTP、HTTPS -> HTTPS),只需正常发出/重定向(即相对链接)
  3. 如果从 HTTP -> HTTPS 导航,只需正常发出/重定向,除非使用绝对 URL 来更改协议(protocol)。
  4. 如果从 HTTPS -> HTTP 导航...这是非常困难的,因为如果您只是发出协议(protocol)更改的绝对 url 链接,大多数浏览器都会向用户显示一条警告消息。您必须使用 META-Refresh 重定向。

我使用重定向帮助程序页面 redirect.aspx?url=unsecure_page2.aspx,它基本上发出如下元标记:

<meta http-equiv="refresh" content="0;url=http://www.mydomain.com/unsecure_page2.aspx">
You are being redirected to http://www.mydomain.com/unsecure_page2.aspx.
If you aren't redirected in 5 seconds, please click <a href="http://www.mydomain.com/unsecure_page2.aspx">here</a>.

然后当你在https://www.mydomain.com/secure_page1.aspx ,并且您想重定向到 unsecure_page2.aspx,您可以使用重定向助手:

See unsecure page <a href="redirect.aspx?url=unsecure_page2.aspx">here</a>!

关于.net - 为特定页面禁用 ssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6372801/

相关文章:

.net - 带 mDNS/Bonjour 浏览器的 Windows Phone 7

c# - Quartz.NET ADO.net 数据库配置

c# - FileInfo 的空对象模式

ssl - LDAP 存储 SSL 证书

jquery - MVC 3 Razor Ajax HttpDelete IIS6

.net - 哪个更适合 ASP.Net : WMI or ADSI or Managed API? 中的 IIS 管理,有什么区别?

c# - 如何避免使用字符串成员名称来获取匿名类型的成员?

java - 用于安全 LDAP 身份验证绕过的 BlindSSLFactory 在生产环境中不起作用

c# - nopCommerce https ssl

asp.net - 在 IIS 中启用内容过期可能有哪些缺点?