1

我的 IIS 基于 ASP.NET 的网站允许用户下载文件。我试图找出一种在用户下载之前/在文件中标记 ID 的好方法,以便每个用户都可能拥有一个唯一标记的文件。

找到偏移量并将字节写入文件并不是困难的部分。我想弄清楚的是要触发什么,以便可以调用我的写入过程,以及管理多个用户下载同一文件的某种方式(我假设将文件写入一个唯一的临时文件夹,标记它,然后下载)。

建议?

奖励:其中一些文件将是经过代码签名的可执行文件。盖章会使数字签名无效,因此我需要在盖章后再次签名。关于如何最好地做到这一点的想法?(我假设在签名过程中获取时间戳会花费太长时间,因此必须在没有时间戳的情况下进行签名)。

4

1 回答 1

0

只需将其视为任何资源请求:只是,不是发回 HTML,而是通过响应流(以及适当的标头,希望如此)发回适当的数据。

请参阅这篇关于如何发回图像的小帖子。现在,如果标记不是非常具有侵入性,只需读取文件并在流式处理中写出“标记”版本。

当然,我对资源做了一些假设,但是......

如果您确实需要/想要传递给临时文件(并让网络服务器进行静态文件服务,或者诸如此类),那么只需使用资源请求来生成文件并通过重定向到适当的(现在生成)响应静态资源。如果资源是使用 nonce 生成的,并且它们不能以其他方式列出,那么依赖“通过默默无闻的安全性”并让链接保持有效直到它被清除(比如超过 6 小时的所有文件都被清除)可能就足够了不定期的)。在文件的哈希上生成随机数可能就足够了(例如,消除在数据库中映射 ID->File 的需要)......但同样,它可能不是。

快乐编码。

于 2011-12-01T05:28:59.437 回答