【发布时间】:2018-10-31 12:03:13
【问题描述】:
我正在使用 Kendo 上传器将文件上传到我的应用程序中。我已确保仅允许上传我的配置中定义的扩展名,否则会显示错误消息。我的代码看起来像这样
var validExtensions = [".pdf", ".doc", ".docx", ".pptx", ".xls", ".xlsx", ".txt"];
$('#uploader').kendoUpload({
multiple: false,
select: function (e) {
if (validExtensions.indexOf(e.files[0].extension.toLowerCase()) <= -1) {
alert("File type not allowed!");
e.preventDefault();
return false;
}
}
});
这可以很好地接受仅具有给定扩展名的文件。但是安全团队提出了一个问题,他们正在评估以避免上传具有多个扩展名的文件(例如 fileName.msi.txt 或 fileName.exe.doc)。
我知道我们可以根据 .并进行评估,但我想知道我们是否有更清洁的方法来实现这一目标?
谢谢
【问题讨论】:
-
这不是“多重扩展”。您可以将点放在文件名中任何您喜欢的位置(在 Windows 系统上)。文件扩展名始终只是最后一个点之后的最后一个字符。您可以轻松地编写一个正则表达式来过滤具有多个点的文件名,但是它并不比停止名称中包含“1”的文件更安全。如果您想要更有效的东西,那么在上传之前和之后验证文件的 MIME 类型会是一个更好的主意。请记住,重命名文件扩展名很简单。伪造 MIME 类型的情况更少。
标签: javascript jquery kendo-ui kendo-upload