如何使用https保护网站

时间:2010-02-05 06:01:44

标签: asp.net ssl https asp.net-2.0

我必须为公司构建一个小型webapp来维护他们的业务数据......只有公司内部的人才会使用它,但我们计划在公共领域托管它,以便员工可以连接到app来自不同的地方。 (直到现在我已经构建了仅在内部托管的网络应用程序)

我想知道我是否需要使用安全连接(https)或只是表单身份验证就足够了。

如果你说https,我有一些问题:

  1. 如何为https准备我的网站。 (我需要更改代码/配置)
  2. SSL和https是一样的......
  3. 我是否需要向某人申请获得某些许可证等。
  4. 我是否需要保护所有页面或仅登录页面...
  5. 我正在网上寻找答案,但我无法获得所有这些要点......任何白皮书或其他参考资料也会有所帮助......

    随意询问您是否需要更多信息。

    由于

    • 拉加

7 个答案:

答案 0 :(得分:48)

  

我应该怎么做才能准备我的网站   对于https。 (我需要改变吗?   代码/配置)

您应该记住安全编码的最佳实践(这是一个很好的介绍:http://www.owasp.org/index.php/Secure_Coding_Principles),否则您只需要一个正确设置的SSL证书。

  

SSL和https是否相同......

差不多,是的。

  

我是否需要向某人申请才能获得   一些许可证或其他东西。

您可以从证书颁发机构购买SSL证书或使用自签名证书。您可以购买的产品价格差异很大 - 从每年10美元到数百美元不等。例如,如果您设置在线商店,则需要其中一种。自签名证书是内部应用程序的可行选项。您也可以使用其中一个进行开发。这是一个关于如何为IIS设置自签名证书的好教程:Enabling SSL on IIS 7.0 Using Self-Signed Certificates

  

我是否需要保护所有页面   或只有登录页面..

对所有内容使用HTTPS,而不仅仅是初始用户登录。它不会产生过多的开销,这意味着如果被截获,用户从远程托管的应用程序发送/接收的数据将无法被外部方读取。即使Gmail现在默认也会启用HTTPS。

答案 1 :(得分:8)

什么样的商家数据?商业秘密或只是他们不希望别人看到的东西,但如果它出来了,那不是什么大不了的事吗?如果我们谈论商业秘密,财务信息,客户信息和一般保密的东西。然后甚至不要走那条路。

  

我想知道我是否需要使用   安全连接(https)或只是   表单身份验证就足够了。

一直使用安全连接。

  

我是否需要更改代码/配置

是。好吧可能不是。您可能希望有专家为您执行此操作。

  

SSL和https是否相同......

大多数情况下是的。人们通常将这些事物称为同一事物。

  

我是否需要向某人申请获得某些许可证等。

您可能希望证书颁发机构签署您的证书。这会花费你或你的客户一点钱。

  

我是否需要保护所有页面或仅登录页面...

始终使用https。如果该站点适用于内部用户,则性能通常不是问题。

  

我正在网上寻找答案,   但我无法得到所有这些   点...任何白皮书或其他   参考也会有所帮助......

从这里开始寻找指导:http://www.owasp.org/index.php/Category:OWASP_Guide_Project

请注意,一旦可以从互联网访问,SSL是使您的网站安全的极小部分。它并不能阻止大多数黑客攻击。

答案 2 :(得分:7)

我认为您对您的网站身份验证和SSL感到困惑。

如果您需要将您的站点设置为SSL,则需要在Web服务器中安装SSL证书。您可以从Symantec等其中一个地方为自己购买证书。证书将包含您的公钥/私钥对以及其他内容。

您不需要在源代码中执行任何操作,并且仍可以继续使用站点中的表单身份验证(或任何其他)。只是这样,Web服务器和客户端之间发生的任何数据通信都将使用您的证书进行加密和签名。人们会使用安全HTTP(https://)来访问您的网站。

查看此信息以获取更多信息 - > http://en.wikipedia.org/wiki/Transport_Layer_Security

答案 3 :(得分:3)

对于业务数据,如果数据是私有的,我会使用安全连接,否则表单身份验证就足够了。

如果您决定使用安全连接,请注意我没有保护网站安全的经验,我只是放弃了在我个人经历中遇到的情况。如果我错了,请随时纠正我。

  

我应该怎样做才能为https准备我的网站。 (我需要更改代码/配置)

为了为您的网站启用SSL (Secure Sockets Layer),您需要设置证书,代码或配置不会被更改。

我已使用OpenSSL中的ActivePerlthis online tutorial为内部网络服务器启用了SSL。如果这用于更多的受众(我的受众少于10人)并且属于公共领域,我建议寻求专业的替代方案。

  

SSL和https是否相同......

不完全是,但它们齐头并进! SSL确保在您查看网站时来回加密和解密数据,https是访问安全网站所需的URI。当您尝试访问http://secure.mydomain.com时,您会注意到它会显示错误消息。

  

我是否需要向某人申请获得某些许可证等。

您无需获得许可证,而是获得证书。您可以查看通过安全网站提供专业服务的公司,例如VeriSign

  

我是否需要保护所有页面或仅登录页面...

mydomain.com启用证书后,*.mydomain.com下的每个页面都将受到保护。

答案 4 :(得分:1)

4.我是否需要保护所有页面或仅登录页面...

只需将登录页面保留在https

下即可

这将确保浏览其他页面时没有开销。条件是您需要在Web配置中提供正确的身份验证设置。这是为了确保未登录的用户将无法浏览需要身份验证的页面。

答案 5 :(得分:1)

@balalakshmi提到了正确的身份验证设置。身份验证只是问题的一半,另一半是授权。

如果您使用的是表单身份验证和<asp:Login>等标准控件,则需要执行以下操作,以确保只有经过身份验证的用户才能访问受保护的页面。

web.config中,在<system.web>部分下,您需要默认禁用匿名访问:

<authorization>
 <deny users="?" />
</authorization>

任何将匿名访问的页面(例如Login.aspx页面本身)都需要具有重新允许匿名访问的覆盖。这需要<location>元素,且必须位于<configuration>级别(外部 <system.web>部分),如下所示:

<!-- Anonymous files -->
<location path="Login.aspx">
 <system.web>
  <authorization>
   <allow users="*" />
  </authorization>
 </system.web>
</location>

请注意,您还需要允许匿名访问匿名页面使用的任何样式表或脚本:

<!-- Anonymous folders -->
<location path="styles">
 <system.web>
  <authorization>
   <allow users="*" />
  </authorization>
 </system.web>
</location>

请注意,与大多数其他路径类型配置属性不同,该位置的path属性相对于web.config文件夹,并且不能具有~/前缀。

答案 6 :(得分:-2)

尝试在PHP中创建启动目录,如

<?PHP
$ip = $_SERVER['REMOTE_ADDR'];
$privacy = ['BOOTSTRAP_CONFIG'];
$shell   = ['BOOTSTRAP_OUTPUT'];
enter code here
if $ip == $privacy {
function $privacy int $ip = "https://";
} endif {
echo $shell
}
?>

主要是它!