使用Java

时间:2015-11-25 12:15:53

标签: javascript java xml security ws-security

我有一个管理API的应用程序。 作为创建API的一部分,我们允许用户输入一些将在每次API被执行时执行的JavaScript。

此JavaScript在服务器端执行,因此流程为 -

  1. 最终用户点击我生成的API链接
  2. 我运行在API创建时输入的JavaScript
  3. 我将请求转发到任何地方
  4. 我将结果返回到前端
  5. 预期用例是设置一些请求标题等。

    现在,我们最近进行了安全审核,这当然打开了通往XXE漏洞的大门 -

    var x='<?xml version="1.0"?><!DOCTYPE foo [  <!ELEMENT foo ANY ><!ENTITY lol SYSTEM "file:///etc/xxxx" >]><foo>&lol;</foo>';
    
    
    var xee = new javascript.ScriptableDocument(x);
    
    
    context.setVariable("request.queryparam.foo",xee.toString()) 
    

    我将在Java中使用整个内容体,但如何阻止XEE漏洞?我可以想象我必须通过传入的JavaScript查找任何XML,并使用Java众所周知的XEE剥离方法之一(极好地描述here)。

    但持久的黑客可能只是让我觉得任何识别JavaScript XML识别的尝试都是困惑的。 示例 -

    var a='<', b="?" c="x";
    
    new javascript.ScriptableDocument(a+b+c+...);
    

    这是一场无法取胜的战斗吗?或者,我能做些什么来缓解这种情况?

    谢谢! Zulfi

0 个答案:

没有答案