首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确使用AngularJS的$sanitize服务?

正确使用AngularJS的$sanitize服务?
EN

Stack Overflow用户
提问于 2014-02-06 15:42:58
回答 1查看 4K关注 0票数 1

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

代码语言:javascript
复制
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。但是,当我发送一些东西给服务器时,在前端对它进行消毒真的有用吗?因为任何人都可以覆盖这个部分,所以无论如何我都需要在服务器上再次这样做。那么,为什么不直接送它去消毒,然后在后端做一些重要的事情呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-06 16:17:50

你的问题似乎有两部分。

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

关于从客户端发送经过消毒的用户名/ passwd,而不是在服务器上这样做,这是一个合理的问题。从技术上说你也可以做到。IMO是一个始终保持用户输入与您代码的pov保持干净的问题。所有输入应在最早的时间点检查是否正确。像凭据这样的关键部分应该有两层理智,以免其中一层不小心消失。或者更糟的是,在两个(或多个)理智层中的一个发现了攻击矢量。

回想一下众所周知的ldap攻击向量,其中用户名读起来像im-a-user)&&()。紧跟a和null的关闭父类是利用漏洞。为什么这样的字符串可以在输入点被擦洗,却又四处飘浮呢?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21607383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档