我正在创建一个JS / Node程序,允许公共信息亭的用户将图像保存到公共AWS S3 bucket。然后,他们会输入自己的电子邮件地址,然后我们会向他们发送一封电子邮件,其中包含该图片的链接,以便他们回家后可以将其检索出来。
整个S3存储桶需要公开,以便用户可以轻松查看自己的单个图像。但是,我想让访问者不太可能猜到另一个图像的文件名,查看另一个人的图像。与安全问题相比,这更多是 light 隐私问题。
如何使用JS随机生成字母数字文件名?文件名应该多长时间?
答案 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());