2016-09-27 3 views
0

멋진 사람들, 사용자가 입력 한 정보의 일부를 확인하기 위해 oData를 사용하고 있습니다. 큰 문제는 예를 들어 Chrome 디버거에서 쉽게 수행 할 수있는 교차 사이트 스크립팅을 피하는 것입니다. 어떻게 이것을 피할 수 있습니까?JavaScript SAPUI5를 사용하여 교차 사이트 스크립팅을 방지하려면 어떻게해야합니까? 사용자와 비밀번호의 유효성을 검사 할 때?

내 코드 :

  onPress: function(oEvent) { 
       var event = this.getView().getModel("loggin").getProperty("/TypeCon"); 
       var TestMode = this.getView().getModel("loggin").getProperty("/TestMode"); 

       if (event == ""){ 
        event = "SAP"; 
       } 


       if (event != 'SAP'){ 
        MessageToast.show("Esta conexão ainda não está disponível"); 
       }else{ 

        if(TestMode == 'X'){ 
         this.getRouter().navTo("CockpitGo"); 
        }else{ 

      var oEntry = {}; 
      oEntry.User= this.getView().getModel("loggin").getProperty("/User"); 
      oEntry.Password= this.getView().getModel("loggin").getProperty("/Password"); 

      var sServiceUrl = "http://abapfox.ddns.net:8000/sap/opu/odata/SAP/YLOGGIN_DATA_SRV/"; 
      var oModel = new sap.ui.model.odata.ODataModel(sServiceUrl, true); 

         //Vamos montar antes o URI pra ver se fica tudo certinho: 
         var Uri = "/sap/opu/odata/SAP/YLOGGIN_DATA_SRV/LoginDataSet(User='" + oEntry.User + "',Password='" + oEntry.Password + "')"; 
         OData.request({ 
           requestUri: Uri, 
           method: "GET", 
           headers: { 
            "X-Requested-With": "XMLHttpRequest", 
            "Content-Type": "application/atom+xml", 
         "DataServiceVersion": "2.0", 
         "X-CSRF-Token": "Fetch" 
        } 
       }, 
       function(data, response) { 
        if (data.Success === true) { 
         // show message 
         MessageToast.show(data.Message); 
         this.getRouter().navTo("CockpitGo"); 
        } else { 
         // show message 
         MessageToast.show(data.Message); 

        } 
       }, 

답변

0

브라우저에서이 문제를 확인하려면, 당신은 Btw는 browserify

같은 도구를 삽입 한 후, data.message가 bleach 같은 NodeJS 모듈을 사용하여 필터링 할 수 있습니다 : MessageToast.show(data.Message);는해야 두 지점 모두에서 호출 할 때 if/else 바깥에 있어야합니다.

0

편집 : 다시 생각해 보면이 이스케이프 시퀀스 내에서 실제로 처리되는 문자를 실제 입력으로 테스트해야합니다. 그들은 스크립트에 대해 이야기하고 있으며 HTML을 쓰고 있지만 더 이상 '>'보다 많은 문자가 포함되어 있는지 확실하지 않습니다 '<'.

https://sapui5.netweaver.ondemand.com/sdk/#docs/guide/4de64e2e191f4a7297d4fd2d1e233a2d.html

크로스 사이트 스크립팅 (XSS)은 브라우저에서 실행되는 응용 프로그램 페이지에 스크립트 코드를 삽입 할 수 없습니다 것을 보장함으로써 방지 할 수있다.

컨트롤은 응용 프로그램 또는 다른 사용자가 저장 한 업무용 데이터에서 오는 페이지에 스크립트를 쓰지 못하게해야합니다. 이 을 보장하기 위해, 다음과 같은 두 가지 방법을 결합해야합니다 형식화 된 컨트롤 속성의

검증

SAPUI5 코어는 속성의 유형에 대한 응용 프로그램 설정 속성의 값을 확인합니다. 이렇게하면 int는 이 항상 int이고 sap.ui.core/CSSSize는 크기를 나타내는 문자열이며 script 태그가 포함되지 않습니다. 이는 열거 형 및 제어 ID에도 적용됩니다. 컨트롤 렌더러는 HTML을 쓸 때이 체크에 의존 할 수 있습니다. 이 웨이에 입력 된 속성 값은을 벗어나지 않고 작성할 수 있습니다. 응용 프로그램에서 나오는 그 문자열 컨트롤의 속성과 다른 값을 보장하고 충분히 규칙 밖으로 스크립트 태그에 입력하지 않아야합니다

컨트롤 개발자 탈출

HTML에 기록 할 때 이스케이프 포함된다. 이를 위해 RenderManager 및 SAPUI5 코어는 도우미 메소드를 제공합니다.