簡體   English   中英

驗證用戶名和密碼時,如何防止使用JavaScript SAPUI5進行跨站點腳本編寫?

[英]How can I prevent Cross-Site-Scripting using JavaScript SAPUI5 When validating user and password?

很棒的人,我正在使用oData來驗證用戶輸入的一些信息。 例如,最大的問題是要避免使用跨站腳本編寫的跨Chrome調試器。 如何避免這種情況?

我的代碼:

           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);

                    }
                },

為了使這個在瀏覽器中,你可以使用一個模塊的NodeJS像過濾data.message 漂白劑 ,具有類似工具嵌入之后browserify

順便說一句: MessageToast.show(data.Message); 應該在if / else之外,因為您在兩個分支中都將其稱為。

編輯:再次考慮這一點,您應該使用真實輸入來測試在此轉義序列中真正處理過哪些字符。 他們正在談論腳本並編寫HTML,現在不確定是否包含的字符多於'>''<'。

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

通過確保無法將腳本代碼注入到在瀏覽器中運行的應用程序頁面中,可以防止跨站點腳本(XSS)。

控件必須禁止將腳本編寫到來自應用程序或其他用戶保存的業務數據的頁面上。 為了確保這一點,必須將以下兩個措施結合起來:

驗證鍵入的控件屬性

SAPUI5核心根據屬性的類型驗證應用程序設置的屬性的值。 這樣可以保證int始終是int,而sap.ui.core / CSSSize是表示CSS大小的字符串,並且不包含腳本標簽。 這也適用於枚舉和控件ID。 編寫HTML時,控件渲染器可以依靠此檢查。 以這種方式鍵入的屬性值無需轉義即可寫入

轉義

控件開發人員必須確保在寫入HTML時,轉義了來自應用程序的字符串控件屬性和其他值,它們的類型不足以排除包含的腳本標簽。 為此,RenderManager和SAPUI5核心提供了輔助方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM