如何在 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函数?
使用 plsql 或 javascript 在 oracle apex 20.1 中的交互式网格中获取行仅包含特定列中的特定值