2011-06-16 70 views
1

环境
IIS 6
.NET 3.5(Web窗体
特定页面禁用SSL

由于种种原因,我想在网页级转向SSL的。这是最好的做法呢?我应该怎么当我正在做这件事时,请注意这是什么被认为是最安全的方式吗?我打算这样做的方式是

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

这会影响其他页面。任何帮助将非常感谢您

+3

切换到清除协议时,请小心页面之间的信息泄漏。例如,如果身份验证令牌或会话ID在http标头中传递,那么当您切换到明文中的页面时,这些标识可能会显示。攻击者嗅探网络(见Firesheep - http://en.wikipedia.org/wiki/Firesheep)可以捕获这些头文件,并以明文形式发送。所以,如果你这样做,你必须确保你不会无意中在清晰的页面上发送安全信息。 – 2011-06-16 13:51:02

回答

1

注意:我使用.aspx来表示ASP.Net页面,但通常应用以下内容。 (因为你告诉它SSL不是要求,但这并不意味着它仍然不能使用SSL)。但是,即使你没有选择要求安全通道,我相信它仍然会使用安全通道(因为你告诉SSL不是需要,但这并不意味着它仍然不能使用SSL)。例如,如果您从secure_page1.aspx导航到unsecure_page2.aspx,则默认情况下它将通过HTTPS(或第一页使用的任何协议)导航,即,当您单击特定页面时,它不会自动从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,而不仅仅是需要安全的单个页面。这里的一个大问题是要记住,任何将发送关键信息的页面必须在用户输入表单之前使用SSL 之前的。例如,不要使Login.aspx为非SSL,然后使用Login-Post.aspx(表单发布操作url)SSL,因为这不安全。

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

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

我使用重定向帮手页redirect.aspx?url=unsecure_page2.aspx,基本上发出meta标签是这样的:

<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>! 
+0

我尝试使用绝对链接'http:// mysubDomain.MyDomain.com/unsecure_page2.aspx',但生成了“页面必须通过安全通道查看”错误 – gh9 2011-06-16 13:58:18

+0

@ gh9:如果您打算使用我的方法,那么您仍然需要取消选中每个应通过HTTP查看的页面的“需要安全通道”(或者对整个站点禁用并纯粹通过业务逻辑进行处理)。如果您希望确保任何人都可以通过HTTP直接访问页面,即使未选中“需要安全通道”,也可以手动在页面上运行代码来检查页面是否为HTTP,如果是,则会自动重定向到HTTPS。 – mellamokb 2011-06-16 14:14:17