如何防止跨站脚本使用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);
}
},
要在浏览器中实现这一点,您可以过滤数据。在使用browserify
等工具将其嵌入后,使用像bleach这样的NodeJS模块来发送消息。Btw: MessageToast.show(data.Message);
应该在if/else之外,就像你在两个分支中调用它一样。
编辑:再考虑一下这个问题,您应该使用实际输入来测试在这个转义序列中真正处理了哪些字符。他们在谈论脚本和编写HTML,不确定这是否包括比'>' '<'更多的字符。
https://sapui5.netweaver.ondemand.com/sdk/文档/指导/4 de64e2e191f4a7297d4fd2d1e233a2d.html
可以通过确保不存在跨站点脚本(XSS)来阻止它中运行的应用程序页面中可以注入脚本代码浏览器。控件必须禁止向来自控件的页面写入脚本应用程序或来自其他用户保存的业务数据。以确保因此,以下两个措施必须结合起来:
类型化控件属性的验证
SAPUI5 core验证应用程序设置的属性值根据属性的类型。这保证了int类型是总是int和sap.ui。core/CSSSize是一个字符串,表示aCSS大小,不包含脚本标签。这也适用于枚举和控制id。控件呈现器可以依赖于此在编写HTML时进行检查。属性值
逃逸控件开发人员必须确保字符串控件属性和来自应用程序的其他值,但没有充分键入中包含的脚本标记在写入时被转义超文本标记语言为此,RenderManager和SAPUI5内核提供了helper方法。
相关文章:
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- jQuery自定义验证比较多个输入的序列
- 使用html中的外部javascript进行数据验证
- 如何使用jquery Validation验证Formspread
- jquery中的文本框验证
- 在验证和发送邮件后更改联系人表单的 html
- 代码不会验证
- JS验证ajax返回的html中的表单数据
- 同步调用,直到用户通过angular验证为访问者
- 带有加号的电话号码验证(可选)
- 解析javascript表单验证器
- 两位数的月份日期验证
- 使用angularjs验证文本框中的电子邮件
- 验证Javascript中的Textarea
- 使用regex的jquery keydown绑定不会验证撇号和句点
- sapui5中必需的字段验证器
- 如何防止跨站脚本使用JavaScript SAPUI5验证用户和密码时
- 如何在通过Apache Cordova创建的Android应用程序首次登录后验证用户登录(UI在SAPUI5上)
- 如何在OpenUI5/SAPUI5中使用jQuery插件(jQuery验证引擎)