如何从Javascript或Node.js中的图像/视频中删除GPS数据?
在我的应用程序中,用户可以上传公开的图片和视频——个人资料图片、博客帖子等 因为它们对其他用户是公开的,所以这意味着与图像相关联的元数据也是公开的。这引起了巨大的隐私问题,因为用户的GPS位置等信息有时可以通过此元数据确定。我想从客户端删除这些数据,并上传一份新的图像/视频副本,而不将这些数据保存到我的数据库中(在本例中,S3使用预先签名的URL) 我在几个博客和其他StackOverflow帖子上看到了推荐的库。然而,这个库似乎只处理JPEG类型的文件(例如MP4呢?PNG现在也有EXIF,如图所示) 应用程序需要删除如何从Javascript或Node.js中的图像/视频中删除GPS数据?,javascript,security,image-processing,amazon-s3,metadata,Javascript,Security,Image Processing,Amazon S3,Metadata,在我的应用程序中,用户可以上传公开的图片和视频——个人资料图片、博客帖子等 因为它们对其他用户是公开的,所以这意味着与图像相关联的元数据也是公开的。这引起了巨大的隐私问题,因为用户的GPS位置等信息有时可以通过此元数据确定。我想从客户端删除这些数据,并上传一份新的图像/视频副本,而不将这些数据保存到我的数据库中(在本例中,S3使用预先签名的URL) 我在几个博客和其他StackOverflow帖子上看到了推荐的库。然而,这个库似乎只处理JPEG类型的文件(例如MP4呢?PNG现在也有EXIF,如
.jpg
.jpeg.png
.gif
和.mp4
文件中包含的所有GPS数据。我不关心其他元数据。但如果可能的话,我想删除所有不必要的元数据。通过这种方式,我可以减少文件上载大小,并删除隐藏在其中的潜在恶意注入代码
那么,有什么方法可以在客户端执行此操作呢?如果不存在,那么如何在服务器端执行此操作
理想情况下,流量如下所示:
FileReader
api获取原始图像数据。因此,我有以下javascript代码:
let fileNode = document.getElementById("file-uploader");
const handleUpload = () => {
console.log("Files uploaded: ", fileNode.files[0]);
const testFile = fileNode.files[0];
const fileReader = new FileReader();
fileReader.onloadend = function() {
console.log("File Array Raw: ", fileReader.result);
console.log("File Array Buffer: ", Buffer(fileReader.result));
}
fileReader.readAsBinaryString(testFile);
}
成功输出上传文件的原始二进制文件和缓冲区。但我不知道具体在哪里编辑结果,以便分割元数据
任何帮助或建议都是绝对推荐的。我主要关心的是隐私和GDPR合规性。@JaromandaX那么你建议我在哪里问这个问题?@JaromandaX我会在我的问题中添加一些代码,希望这会让问题变得更好。你可以使用第三方库
ffmpeg
。如果您使用的是nodejs,则可以使用fluent ffmpeg
https://www.npmjs.com/package/fluent-ffmpeg
By您可以在转换视频时排除元数据选项。@sumit谢谢您的回复,我将检查它out@Brad谢谢你的回复。我知道它叫EXIF,我只是很难找到关于如何为非JPEG文件编辑它的任何信息:/@JaromandaX那么你建议我在哪里问这个问题?@JaromandaX我会在我的问题中添加一些代码,希望这会使它更好。你可以使用第三方库ffmpeg
。如果您使用的是nodejs,则可以使用fluent ffmpeg
https://www.npmjs.com/package/fluent-ffmpeg
By您可以在转换视频时排除元数据选项。@sumit谢谢您的回复,我将检查它out@Brad谢谢你的回复。我知道它被称为EXIF,我只是很难找到关于如何为非JPEG文件编辑它的任何信息:/