猿问
下载APP

asp.net中强制https用于整个网站的最佳方式?

asp.net中强制https用于整个网站的最佳方式?

大约6个月前,我推出了一个网站,每个请求都需要通过https。当我找到确保页面的每个请求都通过https的唯一方法是在页面加载事件中检查它。如果请求不是通过http,我会response.redirect(“ https://example.com ”)

有没有更好的方法 - 理想情况下web.config中的一些设置?


慕桂英4014372
浏览 54回答 3
3回答

幕布斯7119047

请使用HSTS来自http://www.hanselman.com/blog/HowToEnableHTTPStrictTransportSecurityHSTSInIIS7.aspx<?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?><configuration> &nbsp;&nbsp;&nbsp;&nbsp;<system.webServer> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<rewrite> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<rules> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<rule&nbsp;name="HTTP&nbsp;to&nbsp;HTTPS&nbsp;redirect"&nbsp;stopProcessing="true"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<match&nbsp;url="(.*)"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<conditions> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<add&nbsp;input="{HTTPS}"&nbsp;pattern="off"&nbsp;ignoreCase="true"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</conditions> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<action&nbsp;type="Redirect"&nbsp;url="https://{HTTP_HOST}/{R:1}" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redirectType="Permanent"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</rule> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</rules> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<outboundRules> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<rule&nbsp;name="Add&nbsp;Strict-Transport-Security&nbsp;when&nbsp;HTTPS"&nbsp;enabled="true"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<match&nbsp;serverVariable="RESPONSE_Strict_Transport_Security" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pattern=".*"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<conditions> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<add&nbsp;input="{HTTPS}"&nbsp;pattern="on"&nbsp;ignoreCase="true"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</conditions> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<action&nbsp;type="Rewrite"&nbsp;value="max-age=31536000"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</rule> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</outboundRules> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</rewrite> &nbsp;&nbsp;&nbsp;&nbsp;</system.webServer></configuration>原始答案基本上protected&nbsp;void&nbsp;Application_BeginRequest(Object&nbsp;sender,&nbsp;EventArgs&nbsp;e){ &nbsp;&nbsp;&nbsp;if&nbsp;(HttpContext.Current.Request.IsSecureConnection.Equals(false)&nbsp;&&&nbsp;HttpContext.Current.Request.IsLocal.Equals(false)) &nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;Response.Redirect("https://"&nbsp;+&nbsp;Request.ServerVariables["HTTP_HOST"]+&nbsp;&nbsp;&nbsp;HttpContext.Current.Request.RawUrl); &nbsp;&nbsp;&nbsp;}}那将放在global.asax.cs(或global.asax.vb)中我不知道在web.config中指定它的方法

Qyouu

在IIS10(Windows 10和Server 2016)中,从版本1709开始,有一个新的,更简单的选项,用于为网站启用HSTS。微软描述新方法的优点在这里,并提供了如何以编程方式或通过直接编辑ApplicationHost.config文件(就像web.config文件,但在IIS级别上运行,而不是个别网站实施变更许多不同的例子)。ApplicationHost.config可以在C:\ Windows \ System32 \ inetsrv \ config中找到。我在这里概述了两个示例方法,以避免链接腐烂。方法1&nbsp;- 直接编辑ApplicationHost.config文件在<site>标记之间添加以下行:<hsts&nbsp;enabled="true"&nbsp;max-age="31536000"&nbsp;includeSubDomains="true"&nbsp;redirectHttpToHttps="true"&nbsp;/>方法2&nbsp;- 命令行:从提升的命令提示符(即在CMD上右键并以管理员身份运行)执行以下操作。请记住将Contoso与IIS管理器中显示的站点名称进行交换。c:cd&nbsp;C:\WINDOWS\system32\inetsrv\ appcmd.exe&nbsp;set&nbsp;config&nbsp;-section:system.applicationHost/sites&nbsp;"/[name='Contoso'].hsts.enabled:True"&nbsp;/commit:apphost appcmd.exe&nbsp;set&nbsp;config&nbsp;-section:system.applicationHost/sites&nbsp;"/[name='Contoso'].hsts.max-age:31536000"&nbsp;/commit:apphost appcmd.exe&nbsp;set&nbsp;config&nbsp;-section:system.applicationHost/sites&nbsp;"/[name='Contoso'].hsts.includeSubDomains:True"&nbsp;/commit:apphost appcmd.exe&nbsp;set&nbsp;config&nbsp;-section:system.applicationHost/sites&nbsp;"/[name='Contoso'].hsts.redirectHttpToHttps:True"&nbsp;/commit:apphost如果您在访问受限的托管环境中,Microsoft在该文章中提供的其他方法可能是更好的选择。请记住,IIS10版本1709现在可在Windows 10上使用,但对于Windows Server 2016,它位于不同的发行版轨道上,不会作为修补程序或Service Pack发布。有关1709的详细信息,请参见此处。

桃花长相依

我花了一些时间寻找有意义的最佳实践,并发现以下哪些对我来说是完美的。我希望这会在某个时候拯救你。使用配置文件(例如asp.net网站)&nbsp;https://blogs.msdn.microsoft.com/kaushal/2013/05/22/http-to-https-redirects-on-iis-7-x-and-更高/或在您自己的服务器上&nbsp;https://www.sslshopper.com/iis7-redirect-http-to-https.html[简短回答]简单下面的代码就在里面<system.webServer>&nbsp; &nbsp;<rewrite> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<rules> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<rule&nbsp;name="HTTP/S&nbsp;to&nbsp;HTTPS&nbsp;Redirect"&nbsp;enabled="true"&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stopProcessing="true"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<match&nbsp;url="(.*)"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<conditions&nbsp;logicalGrouping="MatchAny"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<add&nbsp;input="{SERVER_PORT_SECURE}"&nbsp;pattern="^0$"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</conditions> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<action&nbsp;type="Redirect"&nbsp;url="https://{HTTP_HOST}{REQUEST_URI}"&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redirectType="Permanent"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</rule> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</rules> &nbsp;</rewrite>
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答