2015-01-29 3 views
1

우리는 HP fortify Audit Workbench 3.80을 사용하여 응용 프로그램의 취약점을 평가합니다.ESAPI를 사용하여 JavaScript DOM XSS를 해결하는 방법은 무엇입니까?

function doAjaxCall(param1, param2, div) { 
    var options = { 
      url : url, 
      params : { 
       param1 : param1, 
       param2 : param2 
      }, 
      method: 'GET', 
      success: function(response, options) { 
       processResponse(response, div); 
      }, 
      failure: function(response, options) { 
       doSomethingElse(); 
      } 
    }; 
    Ext.Ajax.request(options); 
} 


function processResponse(response, div) { 
    // SECURITY ISSUE HERE 
    document.getElementById(div).innerHTML = '<br>' + 
      'An error occurred with status code ' 
      + response.status + 
      '<br><br>'; 
} 

response는 AJAX 요청에서 반환 된 반응이다 : 마크에게 중요한로서 다음의 ExtJS 자바 스크립트 코드 (이하 "최악") DOM XSS 취약점을 강화.

포티 말한다 :

방법 "processResponse"은 악성 코드를 실행하는 브라우저가 발생할 수 라인 (100)상의 웹 브라우저에 확인되지 않은 데이터를 전송한다.

나는이 문제를 이해하고 왜 그 문제입니까? 내가 모르는 것은 ESAPI으로 입력을 어떻게 위생 처리하는지입니다. 우리는 자바 코드의 문제에 ESAPI를 성공적으로 사용하고 있지만이 특정 문제는 자바 스크립트에서 해결할 수 없습니다.

이 JavaScript ESAPI 라이브러리, ESAPI4JS을 찾았지만 매우 높은 보안 환경에서 작업하며이 라이브러리에 액세스 할 수 없습니다.

어떻게 ESAPI를 사용하여 응답을 살균 할 수 있습니까? 사용자 요청에 따라

편집

추가 된 전체 아약스 요청 코드.

+0

@GeorgeStocker processResponse가 클라이언트 측에 있습니다. 그것은 질문에 포함 된 코드 줄을 포함하는 자바 스크립트 함수입니다. – Josh

+0

@GeorgeStocker AJAX 성공 콜백을위한 래퍼 함수입니다. – Josh

+0

우리가보고있는 것을 더 명확하게 보여주기 위해 코드 자체에 그 코드를 포함 할 수 있습니다. –

답변

-2

취약 :

document.write("Site is at: " + document.location + "."); 

취약하지 : org.owasp.esapi.ESAPI.initialize(); document.write ($ ESAPI.encoder(). encodeForHTML ("사이트는 at :"+ document.location));

사용 전에 초기화해야합니다. owasp의 사이트에 대한 문서가 있습니다.

@GeorgeStocker가 잘못되었습니다. DOM 기반의 xss는 일반적으로 서버 측에서 처리 할 수 ​​없기 때문에 가장 위험합니다. 완벽한 예가 위의 코드 일 것입니다. 위 코드는 일부 코드 앞에 #를 사용하면 쉽게 악용 될 수 있습니다.

또한 대부분의 클라이언트 측 xss 필터는 onerror를 사용하여 무시할 수 있습니다.

ey3

+0

코드가 ESAPI4JS에서 온 것 같습니다. 그렇지 않습니까? 나는 그 도서관에 접근 할 수 없다. – Josh

+0

나는 그것을 'document.location'이라고 읽지 않았다. 그건 의미가 있습니다. –

+0

@JOsh 해당 라이브러리에 MIT와 같은 올바른 라이센스가있는 경우 잠재적으로 앱 소스에 소스를 포함시킬 수 있습니다. –

관련 문제