如何在 Javascript 或 Apex 中检查受限文件

Posted

技术标签:

【中文标题】如何在 Javascript 或 Apex 中检查受限文件【英文标题】:How to check restricted file in Javascript or Apex 【发布时间】:2018-10-30 15:20:19 【问题描述】:

在上传文件时,我们需要验证文件是有效文件还是被 OWASP 限制的文件。

允许的文件类型:txt,ppt,pptx,doc,docx,xls,xlsx,csv,jpeg,jpg,bmp,gif,png 受限文件类型:exe,​​jar,zip,ini,log [可执行文件]

我们在 javascript 中遵循了以下验证。

    我们正在按文件扩展名验证文件 [工作正常] 我们正在通过幻数[十六进制代码]评估文件内容,无论文件扩展名是否已更改。它适用于大多数文件类型。

但这里的问题是 jar、odt、docx、pptx、ppt、xlsx 文件具有相同的幻数。

我们不允许用户上传可执行文件和 zip、jar、odt 文件。

如何用docx、pptx、xlsx区分jar、odt和zip?

参考链接:

https://en.wikipedia.org/wiki/List_of_file_signatures

https://medium.com/the-everyday-developer/detect-file-mime-type-using-magic-numbers-and-javascript-16bc513d4e1e

请让我知道在 Javascript 或 apex 中实现此目的的任何解决方案或建议。

【问题讨论】:

【参考方案1】:

通过使用 FileReader API 读取文件内容并检查文件是否包含 [Content_Type.xml] 已解决问题。如果文件是 docx、xlsx 或 pptx,它会在从 filereader 读取文件内容时返回 [content_type].xml。如果是 jar/odt/odc/apk 或任何其他文件,则返回不同的字符串。

【讨论】:

以上是关于如何在 Javascript 或 Apex 中检查受限文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将过程中的变量值传递给 Apex 中的 Javascript 函数

如何在动态操作中单击按钮时调用Oracle APEX中的javascript函数?

无法在 APEX 上启用 JavaScript MLE

使用 plsql 或 javascript 在 oracle apex 20.1 中的交互式网格中获取行仅包含特定列中的特定值

Oracle APEX:如何更改交互式网格中开关列的值(使用动态操作 - JavaScript)?

删除 Oracle Apex 交互式网格行操作