我正在开发一个支持SSO SAML授权/身份验证的项目。上次安全性分析表明,我们存在与XML外部实体注入攻击相关的安全漏洞。这是代码中有问题的部分:
InputStream is = new ByteArrayInputStream(metadata.getBytes());
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder docBuilder;
docBuilder = factory.newDocumentBuilder();
Document doc;
doc = docBuilder.parse(is);
我在互联网上搜索并找到了不同的解决方案,其中一些解决方案正在进行一般的XML文档解析。我还找到了解决方案,它们禁用了解析器的特定选项(例如扩展外部实体)。但我不知道这个解决方案是否适用于我的案例。所以我的问题是:解析SAML元数据最安全的方法是什么?
谢谢, 哈里
答案 0 :(得分:1)
我认为最好的方法是依靠着名的第三方mantained软件作为OWASP的ESAPI库。这已成为事实上的标准。 您可以使用专用的ESAPI工具对其进行验证,并过滤掉任何已知的恶意输入。完成此操作后,您可以按照自己的方式解析它。