【问题标题】:Angular REST API securityAngular REST API 安全性
【发布时间】:2014-04-23 06:35:03
【问题描述】:

当我使用 Angular 处理 REST API 请求时,我的应用出现问题

Web 服务 URL 存储在 Angular 服务或控制器 js 文件中 所以如果我有登录网络服务来检查用户名和密码,例如:

http://mylocal.com/api/service.json?api_user=Username&api_key=Password

最终用户或开发者可以获取这个 url 并构建一个软件来尝试查找用户名和密码,那么如果可能的话,如何在 angular js 中隐藏 Web 服务 url?

例子:

$scope.submit = function(request) {
        $scope.contactUsSuccess = false;
        $http.post('/_/contactUs' +
                "?firstName=" + encodeURIComponent(request.first) +
                "&lastName=" + encodeURIComponent(request.last) +
                "&email=" + encodeURIComponent(request.email) +
                "&phone=" + encodeURIComponent(request.phone) +
                "&company=" + encodeURIComponent(request.company) +
                "&message=" + encodeURIComponent(request.message)

            ) // Contact us
            .success(function(reply){
                console.log(reply);
                $scope.contactUsSuccess = true;
                $scope.contactUs = "";
            })
            .error(function(){
                alert('There seemed to be a problem with your submission. Please refresh the page and try again.')
            });
    };

您可以获取联系网址网络服务并使用它,那么我该如何解决这个问题?

【问题讨论】:

    标签: web-services angularjs


    【解决方案1】:

    首先,如果您通过 HTTP 而不是 HTTPS 执行此操作,这真的很糟糕。通过 HTTP 发送此信息以文本/纯文本格式发送您的凭据,以供任何人在网络上嗅探和抓取。

    我假设他们也没有使用特定的防火墙规则。

    由于您正在处理的 REST 端点,您可以通过几种不同的方式启动 REST 调用:

    1. 设置一个包含预定义用户名/密码对的 HTTP(S) 代理。这样,您可以调用 /rest 而不是调用 https://someremoteapp.com/user=joe&pass=test
    2. 可能更好的选择是设置后端转发器服务以使用此 API 并在后端隐藏凭据。你可以使用 PHP、Ruby、Python、Node.JS 之类的东西来做到这一点......
    3. 最好的选择是询问他们是否支持其他安全机制。

    【讨论】:

    • 感谢您的回复,但我的意思是例如:如果我浏览一个网站使用 Angular js,然后我转到浏览器的临时文件并获取控制器 js,所以现在我可以得到网站使用它的所有 Web 服务 URL,我想隐藏这些 URL。
    猜你喜欢
    • 2015-09-08
    • 2012-06-16
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2012-03-06
    相关资源
    最近更新 更多