Asp.net 强制SSL连接
Asp.net 强制SSL连接,asp.net,iis,ssl,Asp.net,Iis,Ssl,A) 在服务器端,您可以仅对每个web应用程序强制SSL连接(通过选择“需要安全通道选项”),还是也可以对每个虚拟目录甚至每个网页强制SSL连接 B) 强制SSL连接到底是如何工作的?如果用户指定http而不是https协议(在请求的URL中),请求将自动被IIS拒绝 thanx可能有一个配置设置来在IIS级别强制执行此操作,但在代码中,您可以这样检查值: if (!Request.IsSecureConnection) { try { Response.re
A) 在服务器端,您可以仅对每个web应用程序强制SSL连接(通过选择“需要安全通道选项”),还是也可以对每个虚拟目录甚至每个网页强制SSL连接
B) 强制SSL连接到底是如何工作的?如果用户指定http而不是https协议(在请求的URL中),请求将自动被IIS拒绝
thanx可能有一个配置设置来在IIS级别强制执行此操作,但在代码中,您可以这样检查值:
if (!Request.IsSecureConnection)
{
try
{
Response.redirect("https://....", true);
}
catch (ThreadAbortException)
{}
}
其中“…”是当前页面的url。此类代码的一个好位置是MasterLayout.master文件的页面加载方法。如上所述,1)可以在服务器、端或虚拟目录中设置SSL
2) 如果使用“要求安全通道”设置配置服务器/站点/vdir,则服务器的响应将是“403.4禁止:查看此资源需要SSL”。错误或“403.5禁止:查看此资源需要SSL 128”
实际上,您可以自定义403.4或403.5错误以重定向回HTTPS。在您的站点下创建一个无SSL要求的VDIR(这很重要),我使用“CustomError”。在此目录中创建一个名为403_4_Error.ASP的ASP文件,其中包含以下内容:
<%@ LANGUAGE="VBScript" %>
<%
if Request.ServerVariables("HTTPS") <> "on" then
sServer = Request.ServerVariables("SERVER_NAME")
sScript = Request.ServerVariables("SCRIPT_NAME")
sQuery = Request.ServerVariables("QUERY_STRING")
Response.Write("https://" & sServer & sScript & "?" & sQuery)
end if
%>
编辑403.4/403.5的服务器/site/vdir的自定义错误属性,并将MessageType设置为URL,将URL设置为“/CustomError/403_4_Error.asp”
请注意,使用ASP时,您可以轻松地使用ASP.net或任何其他脚本语言。一个简单的方法是注册一个检查每个传入请求并在必要时重定向的HttpModule:无需自定义错误 下面是一个演示如何完成的示例。您知道如何在IIS级别强制实施SSL(每个网页)?