【发布时间】:2016-11-09 23:06:32
【问题描述】:
我有一个 JS/HTML5 前端,它调用 C# WebAPI 来上传需要加密然后存储在 SQL DB 中的大文件 (1-3GB)。
我的限制是我不能存储未经加密的文件,也不能存储在 SQL 之外。我也不能使用 SQL FileStream。
对于 WebAPI,我禁用了 BufferStream(通过覆盖 WebHostBufferPolicySelector)来处理任何内存异常。这使我可以将文件直接上传到磁盘,而不会显着增加内存占用。
我想将构成文件的一系列加密块按顺序存储在 SQL 表中的行中。然后我可以将这些块取出,解密它们,并在请求时将它们流回给用户。
我不知道如何获取多数据部分消息、加密块并将其写入数据库中的行。有人可以指出我如何做到这一点的正确方向吗?
【问题讨论】:
-
大文件不存储在数据库中,而是存储在文件系统中,文件的路径存储在数据库中。
-
@zaph - 我知道文件通常不存储在数据库中。不幸的是,我没有写出我工作的要求。正如我上面提到的,我想使用 FileStream 但不认为我可以在不将文件加载到内存的情况下对其进行加密,所以我决定反对(我没有这样做的更大原因是因为它以你提到的方式存储文件)。这就是为什么我考虑存储各个块并加密每个块的原因。
-
下一个问题是如何保护加密密钥,对获得数据库管理员访问权限的人保密——这就是攻击发生的方式。
标签: c# sql-server asp.net-web-api2