gpt4 book ai didi

javascript - 正确使用 AngularJS 的 $sanitize 服务?

转载 作者:行者123 更新时间:2023-11-30 17:38:10 25 4
gpt4 key购买 nike

不久前,我看到了一个关于 AngularJS 身份验证的教程。他们创建了一个看起来像这样的 AuthenticationService:

angular.module("auth").factory("AuthenticationService", function ($http, $sanitize) {

function sanitizeCredentials(credentials) {
return {
username: $sanitize(credentials.username),
password: $sanitize(credentials.password)
};
}

return {
login: function (credentials) {
return $http.post("auth/login", sanitizeCredentials(credentials));
}
};
});

如您所见,$sanitize 服务用于清理用户名和密码。到目前为止一切顺利,但在这里使用它真的有意义吗?据我所知,当用户输入立即显示在 html 中时,使用 $sanitize。但是当我向服务器发送一些东西时,在前端对其进行清理真的有用吗?由于任何人都可以覆盖这部分,所以无论如何我都需要在服务器上再次执行此操作。那么,为什么不直接发送未经过滤的数据并在后端处理重要的事情呢?

最佳答案

您的问题似乎分为两部分。

关于 $sanitize 立即显示时,不确定这意味着什么,b/c 你可能有 ng-model 来捕获用户名。

关于从客户端发送经过净化的用户名/密码而不是在服务器上发送,这是一个合理的问题。从技术上讲,你可以做任何一个。 IMO 这是一个从代码的 Angular 始终保持用户输入干净的问题。所有输入都应尽早进行健全性检查。像证书这样的关键部分应该有两层理智,以免一个不经意地消失。或者更糟的是,在您的两个(或更多)理智层之一中发现了攻击媒介。

回想一下著名的 ldap 攻击向量,其中用户名读起来像 im-a-user)&&()。紧跟 an 和 null 的闭括号是一种利用。为什么在输入时可以删除这样的字符串?

关于javascript - 正确使用 AngularJS 的 $sanitize 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21607383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com