javascript
  • jsp
  • xss
  • cross-site
  • 2013-07-18 2 views 0 likes 
    0

    아래 링크에서 전달 된 매개 변수를 기반으로 새 창을 여는 동일한 JSP 파일에서 자바 스크립트 기능을 사용하고 있습니다. XSS 공격을 막기 위해 인코딩해야한다는 말을 들었습니다. 어떤 인코딩을 사용해야합니까?

     <script language="JavaScript">function openDocWindow(report,index,reportType) { 
    
        link = '/ocs/jsp/single_report_frameset.jsp?  
        report_id='+index+'&id=13740995910316prfXwysgrSGk2Strm7pvxC'+ 
        index+'&startCount=0'+'&enclosure_id='+index; 
    
        parent.window.open(link,'detail','width=640,height=480,toolbar=no, 
        location=no,directories=no,status=yes,menubar=no,scrollbars= 
        yes,resizable=yes,alwaysRaised=yes'); 
        return; 
        } 
    

    그래서 난에 encodeURIComponent() 또는에 encodeURI()를 사용하여 veriable 인코딩 링크로 생각하지만 난 그것을 XSS 공격을 방지 할 수있을 것입니다 아래에 다음과 같이 할 경우 알 필요가?

    parent.window.open(encodeURIComponent(link),'detail','width=640,height=480,toolbar=no, 
        location=no,directories=no,status=yes,menubar=no,scrollbars= 
        yes,resizable=yes,alwaysRaised=yes'); 
        return; 
    

    도움 주셔서 감사합니다.

    답변

    0

    당신은 조각에 의해 encodeURIComponent 조각을 사용할 필요가 :

    function openDocWindow(report,index,reportType) { 
        var link = '/ocs/jsp/single_report_frameset.jsp?report_id=' + 
        encodeURIComponent(index) + 
        '&id=13740995910316prfXwysgrSGk2Strm7pvxC' + 
        encodeURIComponent(index) + 
        '&startCount=0&enclosure_id=' + 
        encodeURIComponent(index); 
    
        parent.window.open(link,'detail','width=640,height=480,toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,alwaysRaised=yes'); 
        return; 
    } 
    

    나는 아마 한 번 인코딩 것하고 값을 다시 사용; 그것은 단지 설명을위한 것입니다. 기본적으로 URI 메타 문자가 포함될 수있는 페이지의 모든 콘텐츠를 인코딩해야합니다. 메타 문자를 의도적으로 소개 할 것이기 때문에 메타 문자를 사용하도록 설계되었습니다.

    이제 XSS를 방지 할 수 있습니까? 아니, 전혀. 최소한 XSS에 대한 정의에 따라 가능한 공격의 일부분 만 이 인코딩은 URI 해석에만 사용됩니다. 이런 방식으로 악의적 인 사용자 입력 문자열을 전달하는 것은 완벽하며, 사이트가 포함될 때 사이트가 그것을 보호하지 않으면 사이트의 일부 페이지로 돌아갈 때 악의적입니다.

    +0

    도움 주셔서 감사합니다. 그러면 XSS를 어떻게 막을 수 있습니까? 나는 ESAPI.encoder(). encodeForURL (String str)을 사용하려고 생각했지만 링크 변수를 ESAPI 메소드의 문자열 인수로 전달할 수 없습니다. 그것은 링크가 해결 될 수 없다고 말합니다. 나는 ESAPI parent.window.open (ESAPI.encoder(). encodeForURL (link.toString()), 'detail', 'width = 640, height = 480, toolbar = no, location = no, directories = no를 사용하여 이것을 시도했다. , status = yes, menubar = no, scrollbars = yes, resizable = yes, alwaysRaised = yes '); –

     관련 문제

    • 관련 문제 없음^_^