2017-12-22 6 views
0

동일한 작업을 수행하는 동안 "XStream의 보안 프레임 워크가 초기화되지 않았기 때문에 XStream이 취약 할 수 있습니다." 아래 코드는자바 코드를 통해 JMETER 호출 및 Xstream 보안 예외가 발생하는 JMX 테스트 파일 실행

package com.jmeter.runner; 

import java.io.FileInputStream; 

import org.apache.jmeter.engine.StandardJMeterEngine; 
import org.apache.jmeter.save.SaveService; 
import org.apache.jmeter.util.JMeterUtils; 
import org.apache.jorphan.collections.HashTree; 

import com.thoughtworks.xstream.XStream; 

public class JMeterFromExistingJMX { 

    public static void main(String[] argv) throws Exception { 


     Class<?>[] classes = new Class[] { JMeterFromExistingJMX.class }; 
     XStream xStream = new XStream(); 
     XStream.setupDefaultSecurity(xStream); 
     xStream.allowTypes(classes); 



      // JMeter Engine 
      StandardJMeterEngine jmeter = new StandardJMeterEngine(); 


      // Initialize Properties, logging, locale, etc. 
      JMeterUtils.loadJMeterProperties("F:/Required_Setup_Softwares/apache-jmeter-3.3/bin/jmeter.properties"); 
      JMeterUtils.setJMeterHome("F:/Required_Setup_Softwares/apache-jmeter-3.3"); 
      JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level 
      JMeterUtils.initLocale(); 

      // Initialize JMeter SaveService 
      SaveService.loadProperties(); 

      // Load existing .jmx Test Plan 
      FileInputStream in = new FileInputStream("F:/Required_Setup_Softwares/apache-jmeter-3.3/bin/test.jmx"); 
      HashTree testPlanTree = SaveService.loadTree(in); 
      in.close(); 

      // Run JMeter Test 
      jmeter.configure(testPlanTree); 
      jmeter.run(); 
     } 


} 

내가

Security framework of XStream not initialized, XStream is probably vulnerable. 
Exception in thread "main" java.lang.NullPointerException 
    at org.apache.jmeter.engine.StandardJMeterEngine.configure(StandardJMeterEngine.java:176) 
    at com.jmeter.runner.JMeterFromExistingJMX.main(JMeterFromExistingJMX.java:46) 

jmeter.configure (testPlanTree) 아래로 XStream을 보안 오류가 발생하고 실행하는 동안; 이 줄은 Xstream을 사용하여 내부적으로 문제를 일으켰습니다. 그래서 극복하기 위해 아래 코드를 시도했지만 작동하지 않습니다.

Class<?>[] classes = new Class[] { JMeterFromExistingJMX.class }; 
     XStream xStream = new XStream(); 
     XStream.setupDefaultSecurity(xStream); 
     xStream.allowTypes(classes); 

도와주세요. 나뿐만 아니라 아래의 코드를 시도했지만 너무 나는 당신의 문제를 재현 할 수없는

XStream xstream = new XStream(); 
// clear out existing permissions and set own ones 
xstream.addPermission(NoTypePermission.NONE); 
// allow some basics 
xstream.addPermission(NullPermission.NULL); 
xstream.addPermission(PrimitiveTypePermission.PRIMITIVES); 
xstream.allowTypeHierarchy(Collection.class); 
// allow any type from the same package 
xstream.allowTypesByWildcard(new String[] { 
    "com.your.package.**" 
}); 

답변

0

를 작동하지 않는 그것, 그러나 코드가 벗겨 조금 보이는 : F:/Required_Setup_Softwares/apache-jmeter-3.3

그래서 것 다음 문제 해결 단계를 권장합니다

  1. 을 확인 프로젝트 종속성에서 JMeter 3.3 libraries이 있는지
  2. 당신이 아래의 코드를 제거해야합니다 :

    // Load existing .jmx Test Plan 
    FileInputStream in = new FileInputStream("F:/Required_Setup_Softwares/apache-jmeter-3.3/bin/test.jmx"); 
    HashTree testPlanTree = SaveService.loadTree(in); 
    in.close(); 
    

    을하고 다음 행으로 대체 :

    HashTree testPlanTree = SaveService.loadTree(new File("F:/Required_Setup_Softwares/apache-jmeter-3.3/bin/test.jmx")); 
    
  3. 프로젝트를 깨끗하게 빌드하십시오. 쑤시는 떠나야한다.

+0

감사합니다. 저에게 도움이되었습니다. –

관련 문제