【问题标题】:What features do I need to have before I open an ASP.Net app onto the internet?在将 ASP.Net 应用程序打开到 Internet 之前,我需要具备哪些功能?
【发布时间】:2011-08-09 23:28:42
【问题描述】:

在我启用对新网站的访问之前,应执行哪些步骤以确保其安全且“准备好生产”?

到目前为止,我有以下内容:

  • 错误记录(通过 ELMAH)
  • SSL 已启用,我有一个从 HTTP 到 HTTPS 的重定向
  • <customErrors mode="RemoteOnly" />
  • 编译时没有调试

我目前的技术栈是 IIS7 和 ASP.Net MVC3。

我确定我忘记或不知道许多其他项目。有什么建议吗?

【问题讨论】:

  • 实际上,我倾向于使用 ASP.NET Health Monitoring,因为它会记录所有未捕获的内容,而且它是内置的。
  • 我建议您针对您认为您的流量的样子进行一些基本的负载测试,乘以一些乘数。

标签: security asp.net-mvc-3 iis-7 production-environment


【解决方案1】:
  1. 防止 sql 注入。使用存储过程或参数化的 sql 语句。您可以使用动态 sql - 但要非常小心,如果这样做 - 请确保使用参数化查询,并且不要通过附加变量来形成“内联”的 sql 语句。

  2. 通过确保使用 Html.AntiForgeryToken 来防止跨站请求伪造 (CSRF)

  3. 确保跟踪已关闭

  4. 确保自定义错误已打开,因此不会向客户端显示黄屏死机(即错误详细信息)。

  5. 通过确保您在系统中显示的来自模型、数据库等的任何输出都使用

  6. 确保您的数据库中没有测试帐户。

  7. 确保不能仅通过查询字符串执行任何操作 - 例如传入 /MyApp/DeleteUser/10。需要一个帖子来执行操作,并且这些帖子必须在您的控制器上使用 Html.AntiForgeryToken 和 [ValidateAntiForgeryToken]

  8. 确保在您的页面上编辑信息的任何用户都不能编辑(使用 fiddler 之类的工具)隐藏在页面上的主键,从而在他们回发更改时更改他们正在编辑的记录。例如,您可以将页面上的 CustomerId 散列到隐藏字段中,并在发布时进行比较,以确保它与模型中的内容匹配。

  9. 下个月在亚特兰大的 tech ed 拜访我,参加我的安全讲座:)

【讨论】:

    【解决方案2】:
    1. 如果您使用的是 ELMAH,请确保对 elmah.axd 处理程序的访问是安全的且未打开。否则,您就是在向潜在的黑客提供有价值的信息。

    2. 确保您的 Web 服务器完全是最新的补丁程序,并在 MS 可用时自动下载/安装它们。太多的网站未能应用这些并被 pwned。

    3. 确保您的站点中的动态 sql 为零;或者,至少一切都是通过参数化查询来处理的。按照这些思路,请确保数据库用户凭据已锁定,以便它仅具有您实际需要的功能(提示:dbo 级别不合适)。

    4. 确保用户输入的每一位数据都被正确转义,以便在显示时不会导致跨站点脚本问题。基本上,进行全面的安全审计。如果它足够重要,请聘请外部公司来执行此操作。

    【讨论】:

      【解决方案3】:

      首先想到的是搜索引擎优化 (SEO)。使用 MS 的SEO Toolkit 开始使用。

      【讨论】:

        【解决方案4】:

        除此之外,我总是运行免费工具 Xenu (http://home.snafu.de/tilman/xenulink.html#Description) 来检查损坏的链接。即使您使用其他工具,这也能提供出色的双重检查。

        考虑在每个具有适当权限的子文件夹中放置一个 web.config。例如,如果所有图像都保存在文件夹 \images 中,则该文件夹不应该能够提供 ASCX 文件,只能提供具有适当图像扩展名的文件。

        当您找不到页面时,您是否在做一些用户友好的事情,例如将用户重定向到搜索页面?自定义错误页面可以大大提高网站的可用性。

        您可能想要一个 robots.txt 文件和一个自定义图标,这些项目经常被忽略。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多