Url SSL安全网站最佳实践

Url SSL安全网站最佳实践,url,redirect,https,Url,Redirect,Https,我有一个网站(www.mydomain.com),用SSL证书进行保护。这是一个ASP.NET网站,我通过代码强制某些页面必须使用https://前缀。如果他们不这样做,它会将他们重定向到https://等效地址。这是一种好的做法吗?有没有更简单的方法?并非每个页面都需要SSL 此外,当用户以mydomain.com而不是www.mydomain.com的形式使用我的URL时,他们会收到一个证书错误,因为该证书是为www.mydomain.com注册的。我应该使用与我在上面提到的http://和

我有一个网站(www.mydomain.com),用SSL证书进行保护。这是一个ASP.NET网站,我通过代码强制某些页面必须使用https://前缀。如果他们不这样做,它会将他们重定向到https://等效地址。这是一种好的做法吗?有没有更简单的方法?并非每个页面都需要SSL


此外,当用户以mydomain.com而不是www.mydomain.com的形式使用我的URL时,他们会收到一个证书错误,因为该证书是为www.mydomain.com注册的。我应该使用与我在上面提到的http://和https://问题相同的方法吗?还是有更好的方法处理这个问题?

你的方法听起来不错。在我当前的项目中,当用户进入我的登录页面时,我强制使用HTTPS(基于一个配置标志,它允许我在本地进行测试,而不需要证书)。这允许我访问其他页面,这是方便的

我有几个地方可以让我们的服务器获取其他页面的输出(例如,将html呈现为PDF并获取动态图像)。由于我们的环境,我们的服务器无法解析它的公共名称,因此如果我们在站点上强制使用ssl,我们必须添加我们的内部IP地址(或伪造域名)

至于你的第二个问题,你有两个选择来处理www.example.com和example.com。您可以购买允许您拥有多个域名的证书。这些证书称为UCC证书


第二种选择是将example.com重定向到www.example.com或以其他方式。如果你想让你的内容被谷歌或其他搜索引擎索引,重定向是一个很好的选择。因为他们将www.example.com和example.com视为两个独立的站点。这意味着指向您站点的链接将被拆分,从而降低您的整体页面排名。

您可以将IIS中的站点配置为需要证书,但这将a)如果有人没有使用https访问,则会生成错误;B)要求所有页面都使用https。所以,这是行不通的。您可以在IIS上设置一个过滤器,用于检查所有请求,并将它们重定向为https调用(如果它们在您的加密列表中)。这里明显的缺点是,每次添加新页面(例如,从XML文件或数据库)时,都需要更新页面列表并重新启动过滤器

我认为您可能正确地将代码构建到需要https的页面中,如果这些页面通过http到达,则会重定向到https版本。就您的证书错误而言,您可以使用完整路径(包括www)而不是相对路径重定向来修复此问题。如果您对如何检测呼叫是否使用https或如何获取当前请求的完整路径有任何疑问,请告诉我。两者都非常简单,但如果您需要,我有示例代码

更新-Josh,处理多个子域的证书称为通配符证书。问题是它们比标准证书要贵很多


<强>更新2 < /强>:另一个要考虑的事情是对需要SSL的页面使用母版页或派生类。这样,您可以将其声明为SSLPage类型(或使用相应的母版页),并让Master/Parent类处理重定向,而不是复制每个页面中的代码。同样,如果采用这种方法,您将需要进行一些URL处理,但这非常简单。

以下内容可以帮助您:

  • 如果可以使用https://显示所有网站页面,那么只需将代码更新为使用https://并在IIS中设置两个绑定即可。一个用于http,另一个用于https。通过这种方式,您的网站可以通过任何协议访问
  • 您的访问者收到名称不匹配错误,因为SSL证书中使用的通用名称是www.mydomain.com。Namecheap提供了RapidSSL证书,通过该证书,您可以在单个SSL下保护两个名称。您可以为www.mydomain.com购买此SSL,它将自动保护mydomain.com(即不使用www)

另一种选择是,您可以编写代码,将访问者重定向到www.mydomain.com网站,即使他们浏览mydomain.com。

是的,我也采用相同的方法。我的web.config文件中有一个EnableSsl密钥,我可以根据我所处的环境关闭该密钥。我还有一个管道分隔的SecurePages密钥,我可以轻松地向其中添加/删除站点。另一种方法是定义一个执行检查的基本页面,而不是管道分隔的(假设部署后不需要更改此设置),然后您要确保安全的任何页面都将始终从该页面继承。你也可以使用属性。是的,但我宁愿只保留一个基本页面,我希望能够在不重新编译的情况下动态地将页面设置为ssl或非ssl。谢谢你的输入。我已经在检测http://和https://了,所以这不会是一个问题。我将不得不到处检查www,因为url在我的开发机器上没有。有什么建议吗?现在它们被称为UCC证书。通配符是不同的。Godaddy提供的可支持5个域的UCC为$89/年。Mike:将www.localhost条目添加到您的主机文件中。这将让你测试你的www.logic:-)Josh-UCCs和通配符不同吗?我的支持人员现在这么做了,但我想他仍然称它们为通配符——我们的允许我们拥有任意数量的子域。无论如何,这是很有价值的东西,谢谢!