我正在尝试保护.NET Web服务免受XXE攻击。 对于底层SOAP消息是XML,它可能存在风险。
可以找到一种禁止对XML文档进行DTD处理的方法here和here。 但是,SOAP消息的XML解析是由框架完成的。
如何修改XML阅读器的设置以关闭DTD处理?
我还寻找了一个直接访问XML内容的钩子,但在WebService的文档中找不到任何合适的内容。
答案 0 :(得分:1)
我做了一些测试,表明ASP.NET Web服务受到保护免受XXE攻击。 该框架似乎默认关闭DTD处理。
我使用Soap UI进行测试。 只需添加像
这样的DOCTYPE定义<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root[
<!ENTITY laugh "hahahahaha">
]>
导致错误的请求错误(HTTP状态400)。
为了确保我不仅搞乱了SOAP-Message,我还验证了 XML内容分开。