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

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

我从Java标签中假设你的应用程序是上传到Java应用程序的。

使用Apache POI ,可以使用POIFSReader (请参阅此文档 )在较低级别上读取文件。

RéalGagnon 举了一个例子 ,说明如何通过查看名字来检查内容。

我不得不修改听众(增加了另一个比较)

 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; } } } 

所以它为一些testing文件工作。 您可能需要调整/延长支票。