我怎样才能让JS在公共目录中创建一个不可猜测的随机文件名?

时间:2016-07-14 14:38:15

标签: javascript node.js random amazon-s3 privacy

我正在创建一个JS / Node程序,允许公共信息亭的用户将图像保存到公共AWS S3 bucket。然后,他们会输入自己的电子邮件地址,然后我们会向他们发送一封电子邮件,其中包含该图片的链接,以便他们回家后可以将其检索出来。

整个S3存储桶需要公开,以便用户可以轻松查看自己的单个图像。但是,我想让访问者不太可能猜到另一个图像的文件名,查看另一个人的图像。与安全问题相比,这更多是 light 隐私问题。

如何使用JS随机生成字母数字文件名?文件名应该多长时间?

2 个答案:

答案 0 :(得分:3)

1)你真的不应该用文件名这样做。您最好为S3中的对象生成一个预先签名的URL,比如说,过了几天,然后将 发送到他们的电子邮件中。这样,文件对他们来说就是私密的,而且你不必公开这个文件。

请参阅此处的文档:http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html

2)那就是说,如果你真的只想生成一个长随机字符串,那么用UUID这样做的传统方法就是这样。您可以使用node-uuid包在Node中执行此操作。例如,require('node-uuid').v4();将生成随机UUID。

答案 1 :(得分:0)

我认为Math.random是个不错的选择:



function getRandomName() {
  return parseInt((Math.random() * 10000000000000000000)).toString(36)
}

console.log(getRandomName());
console.log(getRandomName());
console.log(getRandomName());