我对编程相当陌生,我开始制作一个网站来练习,过了一段时间我发现我的登录页面可以很容易地被操纵,只需在浏览器中更改我的 JS 代码。我现在问自己如何才能预防这种情况? 可能是个愚蠢的问题:)
onLogin: async function(oEvent) {
oEvent.preventDefault();
const username = this.byId("usernameInput").getValue();
const password = this.byId("passwordInput").getValue();
const response = await fetch('http://localhost:8081/loginData', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({username: username, password: password})
});
const result = await response.text();
if (**result === "true"**) { //To f.e if(1===1)
console.log("result: Password Correct");
this.oDialog = await Fragment.load({name: "ui5.walkthrough.view.RestartDialog", controller: this});
this.oDialog.open();
} else {
MessageToast.show("Site not implemented yet \nor no access.\n " +
"please contact to enable or implement site", {
duration: 3000,
});
}
}
不幸的是,没有明确的答案,因为这很大程度上取决于 a) 您的页面的功能 b) 它需要有多安全。一般的答案是在用户无法操作的地方做任何安全的事情 - 即在服务器端代码中(而不是 js - 或者更具体地说,通常两者)。需要平衡安全性是否超过客户端代码的便利性。
因此,例如,在这种情况下,使其更安全的第一步可能是:当登录名+密码有效时,而不是服务中的
return "true";
,而是执行return "ui5.walkthrough.view.RestartDialog";
,然后使用ajax调用的返回值Fragment.load
,而不是在页面上。
评论中的全部归功于@fdomn-m