1

我正在创建一个允许用户将 pdf 文档上传到私人区域的应用程序。可能要将所有文件上传到 /uploads 目录。

是否有任何最佳实践/建议关于我如何命名 pdf 以使猜测其他可下载文档的名称变得非常困难。

我想知道原始文件名加上某种递增的 id 是否可能是要走的路?

例如:

  • heresmydocument-0.pdf
  • 你应该猜猜this-1.pdf
  • howabouthisone-2.pdf
4

3 回答 3

2

原始名称加上随机 ID。

R := random-integer;
new-filename := original-filename + R;

其中+代表连接。

这基本上与您的想法相同,除了我添加了一个观察结果,即如果您想让 ID难以猜测,那么使其严格递增有点愚蠢。

如果您担心这rand()仍然太容易猜到,那么请使用SHA1(original-file-contents + R)而不是 just R。但这肯定是矫枉过正。

编辑:实际上,更好的是使用R-original-filename.pdf,然后实现R-origi.pdf被视为等效于R-original-filename.pdf. 你会注意到很多新闻网站,包括 Reddit,都使用这个成语。它使共享 URL 更加方便,因为您可以只写http://www.reddit.com/r/programming而不是写出http://www.reddit.com/r/programming/comments/z3ha1/how_did_you_know_so_much_about_computers_then_i/ /评论/z3ha1/。我建议您还要求用户输入原始文件名的前几个字符,以防止随意浏览;R但当然,你可以通过延长几个字符来获得同样的好处。

于 2012-08-31T23:29:51.587 回答
1

如果您有一个数据库后端,您可能希望在上传时保留文档的详细信息。然后用非常复杂的东西命名文件

3058348113409780784350983450894350809.pdf

然后你可以假设这将很难猜到。

于 2012-08-31T23:28:56.623 回答
0

您可以使用带有 md5 哈希值的文件名结尾。我想这很难猜到。

于 2012-08-31T23:25:48.520 回答