我想在上传文件时对其进行加密,通常情况是它被写入磁盘,然后您可以从那里对其进行加密,我想在此之前对其进行加密。是否有任何用于 http 服务器或应用程序框架的模块可以让我这样做,我不想花很多时间为此编写软件,但如果需要我会这样做。
重要的是,没有任何未加密的记录会接触到硬盘。
硬盘驱动器已使用 aes 加密,但由于第三方可以在我不知情的情况下访问服务器,因此如果有某种方法可以防止实际数据 /that/ 容易受到损害,我更愿意这样做。
我想在上传文件时对其进行加密,通常情况是它被写入磁盘,然后您可以从那里对其进行加密,我想在此之前对其进行加密。是否有任何用于 http 服务器或应用程序框架的模块可以让我这样做,我不想花很多时间为此编写软件,但如果需要我会这样做。
重要的是,没有任何未加密的记录会接触到硬盘。
硬盘驱动器已使用 aes 加密,但由于第三方可以在我不知情的情况下访问服务器,因此如果有某种方法可以防止实际数据 /that/ 容易受到损害,我更愿意这样做。
系统管理员回答:用于预加密数据的 ramdisk 存放区。从不碰磁盘,问题解决了。不?
我最终做的是使用 mod_wsgi..
有了它,我可以将上传作为流,然后使用 PyCrypto 对其进行加密,效果很好
inputLength = int(environ.get('CONTENT_LENGTH', 0))
input = environ['wsgi.input']
f = open(dropDir + '/input','w')
while 1:
remain = inputLength - f.tell()
if remain <= 0: break
chunk = input.read(min(chunksize, remain))
if not chunk: break
f.write(crypt.encrypt(chunk))
f.close()
当我这样做时,我最终使用有状态密码加密整个后数据并将其写入文件,然后在使用 GnuPG 加密后将密钥保存到另一个文件。
这是我收到但尚未测试的答案,在我准确测试它的作用之前,我不会将其标记为答案。
答案是这个 django 项目,它是用于泄露网站的,它将整个文件读入内存,然后对其进行加密。 http://gitorious.org/deaddrop/deaddrop/blob/master/drop/views.py
然而,有一种方法可以将数据分块
http://docs.djangoproject.com/en/1.3/topics/http/file-uploads/
还有一个问题是httpd正在处理文件上传并且可以忽略应用程序框架,这取决于......所以在确定它在做什么之前我需要对其进行大量测试。
但是,我很确定您可以使用 wsgi 来做到这一点,当您将 mod_wsgi 与 apache 一起使用时,我很确定 django 会这样做......不确定其他 Web 服务器使用什么,我更喜欢使用更轻量级的东西.
编辑:如果有人碰巧对此进行了严格测试,并将其作为答案发布,我会将其标记为答案。