我的应用程序包含一个上传选项,用户可以从该选项上传文件(任何文件)。 我知道用户有能力在excel工作表中编写代码/脚本。所以我如何防止这种情况发生,因为它可能导致安全漏洞。 或者我可以申请哪些检查以了解上传的工作表是否包含任何功能?
答案 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;
}
}
}
因此它适用于某些测试文件。您可能需要调整/扩展检查。