在哪里存储在ASP.NET应用程序中提供的敏感文件

我有一个在Windows 2003 Web服务器上运行的大型ASP.NET应用程序。 系统部分提供了包含敏感数据的静态文件(pdf,csv,excel等)。 文件由系统中的某些进程创build,由用户和pipe理员上传,通过与其他系统的集成获得。

哪里是最好(最安全,最实用)的地方来存储这些文件。 我一直在IIS之外存储它们,并使用.NET代码在需要时提供文件。 这一直工作得很好,但用户已经对这些敏感文件的安全性提出了担忧,因为它们存储在Web服务器上。

有人build议将它们存储在数据库中,但我宁愿不这样做。

有任何想法吗? 谢谢!

更合适的问题是,“ 你愿意承担多less开销

通过将文件卸载到同一networking上的一台单独的机器上(我假定是Gbpsnetworking),每次事务的成本大约为1/2微秒(再一次,我在此假设磁盘caching和文件大小,但我认为它是一个合理的假设)。 这只能提供更好的安全性。 通过使用128位块encryption的AES卸载,您可以期望每个事务处于2-3微秒的徘徊状态)。 使用AES-128 +通过ASP会话进行身份validation,您可以合理地预期它在20-30微秒的范围内(每个文件)起床。

只要存储的目录被locking,只有应用程序和有效的用户可以访问它们,那么它们应该尽可能安全。 您可以将它们移动到Web服务器可以看到的另一台服务器上,但不是公开的。

这些文件将最终通过networking提供,因此他们必须被某人/某物读取。

你通过https提供这些文件吗?

但用户已经对这些敏感文件的安全性提出了担忧,因为它们存储在Web服务器上。

那么,呃。 他们想要通过networking上传和检索它们。 他们将会在networking服务器上,至less在这个过程中的某一点。 一些问题 – 谁是用户? 他们是客户吗? 如果是这样,他们有多less知识你的架构,他们应该有? 你是否(如果在美国)根据PCI或HIPAA的要求,或者其他一些规定? 如果是这样,那么你应该进行审计,并与客户分享通过/失败的结果,而不是让他们挑剔你的devise。

我知道你说过不把它们放在一个数据库中,但我在这里适当的提倡这个,我在这里想。 任何你存储文件的方式,你将会承担一定的开销,这只是你的意愿是多less的问题。 通过将文件存储在数据库中,您可以进一步限制谁可以通过从文件系统中完全删除文件来查看这些文件。 在正确的控制和编程下,您可以限制文件只能由您的应用程序访问,从而不需要另外的服务器和大量的文件系统安全更改,更不用说额外的“安全”服务器的备份计划。

像这样存储它们的另一个好处是你可以对它们进行encryption和存储,并且有一个简化的备份计划。