剥离上传文件的元数据信息

Stripping Metadata Info of the uploaded file

提问人:Abhijith Nayak 提问时间:11/3/2023 更新时间:11/3/2023 访问量:40

问:

我在后端使用 Angular 和 Web API。

我有从 Angular 应用程序上传文件(主要是 docx、xlxs、jpg、png pdf 格式)的功能,其他人可以在应用程序的其他屏幕中下载相同的文件。

我收到了安全团队的评论,要求删除上传文件的元数据信息。

enter image description here

enter image description here

我用来在 Angular 和 Web API 中上传的代码 -

 <input type="file" name="input-attach-doc" id="input-attach-doc" accept=".pdf, .jpeg, .png" 
(change)="addFiles($event)" multiple #inputAttachments />


addFiles(event) {
    let files: FileList = event.target.files
    Array.prototype.forEach.call(files, (file) => {
        if (file.size > '5242880') {
            this.notificationService.showWarning('Incorrect file size. Please choose a file with less than 5 MB.',
                'Warning!');
        }
        else {
            if (file.type == 'image/png' || file.type == 'image/jpeg' || file.type == 'application/pdf') {
                this.attachedDocs.push(file)
            }
            else {
                this.notificationService.showWarning('Incorrect file type selected. Please choose a pdf,png or jpeg file.',
                    'Warning!');
            }
        }
    })
}

//passing the selected docs to this function.
saveQueryExternalUser(queryDetails: any, attachments: any[]) {
        let formData = new FormData()
        for (var i = 0; i < attachments.length; i++) {
            formData.append("Document", attachments[i]);
        }
        formData.append("queryData", JSON.stringify(queryDetails))

        return this.httpClient.sampleQueryMgmtPostWithXhr('api/QueryManagementQuery/saveExternalUserQueryDetails', formData);        
    }

我的服务器代码看起来也很简单,服务器代码的片段,文档在其中传递和使用——

 public BaseResponse SaveExternalUserQueryDetails(DTOSaveQueryDetails queryDetails
        , List<DTOQueryDocumentFileFormat> documents)
    {
        BaseResponse response = new BaseResponse();

        //Save attachments
            if (documents.Any())
            {
                var isSuccessful = SaveQueryDocuments(queryDetails.QueryHeaderId, documents);
                if (!isSuccessful)
                {
                    response.ErrorMessages.Add("Could not save attachments");
                    return response;
                }
            }
         

我更喜欢在上传过程中在服务器端剥离文件的元数据信息。

任何帮助都非常感谢。

angular 安全性 asp.net-web-api 文件上传

评论

2赞 Dai 11/3/2023
这没有神奇的解决方案 - 对于您支持的每种文件类型,您需要实现特定的代码来识别和删除该元数据。例如,.JPEG/JFIF 图像可以具有 XMP 或 EXIF 元数据 - 这与 PNG 的元数据不同 - 并且不同于 MP3 ID3 标签或 Word 文档作者信息等......

答: 暂无答案