Ben*_*rey 208 c# asp.net iis https web-config
我搜索了Google和StackOverflow试图找到解决方案,但它们似乎都与ASP.NET等有关.
我通常在我的服务器上运行Linux,但是对于这个客户端,我使用Windows与IIS 7.5(和Plesk 10).这就是为什么我对IIS和web.config文件略有不熟悉的原因.在.htaccess文件中,您可以使用重写条件来检测协议是否为HTTPS并相应地重定向.有没有一种简单的方法可以使用web.config文件实现这一点,甚至使用我安装的" URL Rewrite "模块?
我没有使用ASP.NET的经验,所以如果这涉及到解决方案,那么请包括如何实现的明确步骤.
我使用web.config而不是 PHP 执行此操作的原因是我想在站点内的所有资产上强制使用HTTPS.
Laz*_*One 405
你需要URL Rewrite模块,最好是v2(我没有安装v1,所以不能保证它会在那里工作,但它应该).
以下是此类web.config的示例 - 它将强制所有资源使用HTTPS(使用301永久重定向):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
PS 这个特殊的解决方案与ASP.NET/PHP或任何其他技术无关,因为它仅使用URL重写模块完成 - 它在初始/更低级别之一处理 - 在请求到达您的代码之前被执行.
Muh*_*eed 75
对于那些使用ASP.NET MVC的人.您可以使用RequireHttpsAttribute强制所有响应为HTTPS:
GlobalFilters.Filters.Add(new RequireHttpsAttribute());
Run Code Online (Sandbox Code Playgroud)
您可能还需要做的其他事情来保护您的网站:
强制使用Anti-Forgery令牌来使用SSL/TLS:
AntiForgeryConfig.RequireSsl = true;
Run Code Online (Sandbox Code Playgroud)通过更改Web.config文件,默认情况下要求Cookie要求HTTPS:
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true" />
</system.web>
Run Code Online (Sandbox Code Playgroud)使用NWebSec.Owin NuGet包并添加以下代码行以在站点中启用严格传输安全性(HSTS).不要忘记在下面添加Preload指令并将您的站点提交到HSTS Preload站点.更多信息在这里和这里.请注意,如果您不使用OWIN,则可以在NWebSec站点上读取Web.config方法.
// app is your OWIN IAppBuilder app in Startup.cs
app.UseHsts(options => options.MaxAge(days: 720).Preload());
Run Code Online (Sandbox Code Playgroud)使用NWebSec.Owin NuGet包并添加以下代码行以在站点上启用公钥锁定(HPKP).更多信息在这里和这里.
// app is your OWIN IAppBuilder app in Startup.cs
app.UseHpkp(options => options
.Sha256Pins(
"Base64 encoded SHA-256 hash of your first certificate e.g. cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=",
"Base64 encoded SHA-256 hash of your second backup certificate e.g. M8HztCzM3elUxkcjR2S5P4hhyBNf6lHkmjAHKhpGPWE=")
.MaxAge(days: 30));
Run Code Online (Sandbox Code Playgroud)在任何使用的URL中包含https方案.内容安全策略(CSP) HTTP标头和子资源完整性(SRI)在某些浏览器中模仿该方案时效果不佳.最好明确HTTPS.例如
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.4/bootstrap.min.js">
</script>
Run Code Online (Sandbox Code Playgroud)使用ASP.NET MVC Boilerplate Visual Studio项目模板生成一个包含所有这些内置项目的项目.您还可以在GitHub上查看代码.
Sha*_*tin 12
为了增加LazyOne的答案,这里是答案的注释版本.
<rewrite>
<rules>
<clear />
<rule name="Redirect all requests to https" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action
type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}"
redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
清除可能已在此服务器上定义的所有其他规则.创建一个新规则,我们将其命名为"将所有请求重定向到https".处理完此规则后,请不要再处理任何规则!匹配所有传入的URL.然后检查所有这些其他条件是否都为真:HTTPS已关闭.嗯,这只是一个条件(但要确保它是真的).如果是,请将301永久重定向发送回客户端http://www.foobar.com/whatever?else=the#url-contains.不要在结尾处添加查询字符串,因为它会复制查询字符串!
这就是属性,属性和一些值的含义.
MatchAll)或任何条件必须为true(MatchAny); 类似于AND vs OR.match和它conditions都是真的.
redirect(客户端)或rewrite(服务器端).https://与两个服务器变量连接.url; 在这种情况下,我们将其设置为false,因为{REQUEST_URI}已经包含它.服务器变量是
{HTTPS}这是OFF或者ON.{HTTP_HOST}是www.mysite.com,和{REQUEST_URI} 包括URI的其余部分,例如 /home?key=value
#fragment(参见LazyOne的评论).另见:https://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference
接受的答案对我不起作用。我按照此博客上的步骤进行操作。
我缺少的一个关键点是我需要下载并安装IIS的URL重写工具。我在这里找到的。结果如下。
<rewrite>
<rules>
<remove name="Http to Https" />
<rule name="Http to Https" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<serverVariables />
<action type="Redirect" url="https://{HTTPS_HOST}{REQUEST_URI}" />
</rule>
</rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
210548 次 |
| 最近记录: |