【发布时间】:2013-03-11 14:31:13
【问题描述】:
[对一个冗长而漫不经心的问题表示歉意。我希望能引发比我知识渊博的人的一些讨论/建议。如果这确实不适合 SO,请提示我在哪里提出此类问题。]
我有一个 ASP.NET MVC 4 应用程序。我正在使用 Azure Web 角色来托管它(至少现在是这样)。我的应用程序是一个专门的医学访谈,它从用户那里收集敏感信息并生成一份报告,医生和患者可以查看和交付(通过未加密电子邮件附加的加密 PDF 文件)。敏感数据会保留 24 小时,以便医生回来检索报告,然后删除记录(我知道这实际上并没有从持久存储中删除数据)。
因此,我开始考虑在安全边界方面我需要担心什么,以确保机密数据的机密性。尽管我是一位经验丰富的桌面应用程序开发人员,但我对整个网络编程都是新手。
我需要担心的第一个明显的安全边界是服务器和用户之间的通信层。我有一个有效的、正确配置的 SSL 证书,并且网站中处理登录用户的所有部分(包括采访和报告工作流程)都通过 HTTPS 端点运行。
我假设/希望 Azure 的 SSL 实现是正确的,并且我不能或应该做任何事情来强化主机本身。
为方便用户,我确实允许访问者浏览到http://mywebsite.com,并且当他们登录时,我会重定向到标有 [RequiresHttps] 的页面。我知道这种 HTTP 到 HTTPS 重定向很容易受到SSLStrip man-in-the-middle attack,其中服务器看到安全的 HTTPS 连接,但警惕的用户会注意到 URL 是 HTTP 而不是 HTTPS。我计划保留这个便利功能,但我将通过使用扩展验证证书来缓解它,这为大多数用户提供了一个快乐的绿色地址栏。我会在主登录用户页面上放一些东西,提醒用户验证绿色地址栏。
我会弄清楚如何配置 ASP.NET,以便加密我的所有 cookie。
我已启用远程桌面(在 Azure 部署向导中),这样会打开一个门户,如果有人能找出我的用户名和密码,该门户就会受到攻击。生活吧。
我需要担心的下一个安全边界——这也是我需要帮助的地方——是在未经授权的人访问数据库的情况下保护敏感数据。我的数据库管理知识几乎仅限于复制和粘贴连接字符串以及编写简单的 SQL 查询。
我正在使用 Entity Framework 和 Azure SQL 数据库来处理我的所有数据库内容。我使用嵌入到我的代码中的密钥加密数据实体中的敏感数据。据推测,数据库本身是加密的,刚刚获得数据库文件的人(Azure SQL 数据库界面可通过 Web 连接访问,但只能从受信任的 IP 地址访问)需要弄清楚我的 SQL 用户名和密码才能提取数据输出。
可能有人会诱骗我的应用泄露敏感信息。我的工作流程只允许登录用户读取和写入他自己的记录。为了让攻击者访问加密的敏感数据,他们要么需要获取我的加密密钥,要么想办法调用我的代码。我没有混淆 .NET 代码; 我假设我的可执行文件是安全的。我还假设包含我的数据库凭据的明文 web.config 是安全的。 这些假设是否正确?
所以,这就是我的初学者大脑已将我带入安全路径的情况。任何cmets或建议?我有没有做出任何不正确的假设或忽略了任何明显的事情?
【问题讨论】:
-
鉴于您的应用程序是医疗保健应用程序,当您可以在 Azure 上托管应用程序时,请查看 Azure 信任中心了解合规性详细信息。我在云系统集成公司工作,以上是我们在研究应用程序/技术之前询问的前 5 名之一。
标签: asp.net security azure azure-sql-database