在asp.net核心控制器验证文件的最佳方法?



我有一个。net Core后台的Angular应用。

批量导入时,用户可以上传多行文件。每行包含一个电子邮件地址,然后邀请该电子邮件地址为应用程序创建一个帐户。

我有一个文件类型的输入域

<input type="file">

文件被发送到我的后端控制器作为multipart/form-data

现在验证文件的最佳方法是什么?

目前,我正在检查ContentType对允许的ContentTypes列表。此外,我还检查了文件的大小,因为具有估计内容的文本文件不应超过250 KB。

var allowedFileTypes = new List<string>
{
".txt",
".csv",
"text/comma-separated-values",
"text/plain",
"text/richtext",
"text/rtf",
"application/vnd.ms-excel"
};
var maxFileSize = 250000; //250KB
var file = Request.Form.Files.First();
if (!allowedFileTypes.Contains(file.ContentType))
return BadRequest();
if (file.Length > maxFileSize)
return BadRequest();

还有其他方法可以验证文件吗?有什么我需要考虑的安全问题吗?例如,是否可能在。csv文件中注入恶意代码?

是否有其他方法可以验证文件?

通常,我们用扩展名

验证文件
private string[] permittedExtensions = { ".txt", ".pdf" };
var ext = Path.GetExtension(uploadedFileName).ToLowerInvariant();
if (string.IsNullOrEmpty(ext) || !permittedExtensions.Contains(ext))
{
// The extension is invalid ... discontinue processing the file
}

有什么我必须考虑的安全问题吗?例如,是否可能在。csv文件中注入恶意代码?

您可以使用第三方病毒/恶意软件扫描API对上传的内容。

详细信息请参考文档

相关内容

最新更新