确保excel工作表是否包含任何用户定义的函数

时间:2013-07-05 09:29:31

标签: java excel

我的应用程序包含一个上传选项,用户可以从该选项上传文件(任何文件)。 我知道用户有能力在excel工作表中编写代码/脚本。所以我如何防止这种情况发生,因为它可能导致安全漏洞。 或者我可以申请哪些检查以了解上传的工作表是否包含任何功能?

1 个答案:

答案 0 :(得分:0)

我假设从Java标记中,您上传工作表的应用程序是Java应用程序。

使用Apache POI,您可以使用POIFSReader(请参阅此doc)来阅读较低级别的文件。

RéalGagnon有一个example,它显示了如何通过查看名称来检查内容。

我必须修改监听器(添加另一个比较)

class MacroListener implements POIFSReaderListener {
  [...]

  @Override
  public void processPOIFSReaderEvent(POIFSReaderEvent event) {
    System.out.println("  Event: Name " + event.getName() + ", path "
            + event.getPath());
    if (event.getPath().toString().startsWith("\\Macros")
            || event.getPath().toString().startsWith("\\_VBA")
            || event.getPath().toString().contains("_VBA_")) {
        this.macroDetected = true;
    }
  }
}

因此它适用于某些测试文件。您可能需要调整/扩展检查。