相关疑难解决方法(0)

使用JAXB防止XXE攻击

最近,我们对我们的代码进行了安全审核,其中一个问题是我们的应用程序受Xml外部实体(XXE)攻击.

基本上,应用程序是一个通过Web服务以XML形式接收输入的计算器.

以下是对我们的应用程序进行此类XXE攻击的示例:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <foo:calculateStuff>
         <!--Optional:-->
         <xmlInput><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE currency [  
   <!ENTITY include SYSTEM "file:///d:/" >]>
<calcinput>...</calcinput>
]]></xmlInput>
      </foo:calculateStuff>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

如您所见,我们可以引用指向外部文件("file:///d:/")的实体.

关于XML输入本身(该<calcinput>...</calcinput>部分)是使用JAXB(v2.1)解组的.Web服务部分基于jaxws-rt(2.1).

我需要做些什么来保护我的网络服务?

java security ws-security jaxb xxe

38
推荐指数
1
解决办法
4万
查看次数

标签 统计

java ×1

jaxb ×1

security ×1

ws-security ×1

xxe ×1