【问题标题】:cordova secure authentication in ajaxajax中的cordova安全身份验证
【发布时间】:2016-09-30 20:14:46
【问题描述】:

我有一个 php api 服务,第一次登录,在发送和 setRequestHeader 之前使用 ajax,我将用户名和密码保存在 localStorage:

    function Login(username, password) {
    alert(username);
    alert(password);

        $.ajax({
            url: 'APILink',
            type: 'post',
            beforeSend: function (xhr) {
                xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));
            },
            success: function (data) {
                alert("data" + DecryptData(data.pationts_pationtid));
                alert("data" + DecryptData(data.pationts_nationalid));
                alert("data" + DecryptData(data.pationts_pationtfirstname));
                alert("data" + DecryptData(data.pationts_pationtlastname));
                alert("data" + DecryptData(data.pationts_password));
                alert("data" + DecryptData(data.pationts_password));

                sessionStorage.setItem("username", username);
                sessionStorage.setItem("password", password);

                $.mobile.navigate("index.html");
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert("error" + xhr.responseText);
                alert("errrrrrr" + thrownError);
            }
        });
}

下次在我的 ajax 中,我从会话存储中获取了用户名和密码:

var username = sessionStorage.getItem("username");
var password = sessionStorage.getItem("password");
    $.ajax({
        url: 'http://localhost:17225/notification/index',
        type: 'post',
beforeSend: function (xhr) {
                xhr.setRequestHeader("Authorization", "Basic " +      btoa(username + ":" + password));
            },
        success: function (data) {
            alert("data" + data);

        },
        data: {
            deviceId: sessionStorage.getItem("deviceId"),
            platform: device.platform,
            //Orders : orders
            drugname: value.drugname,
            instruction: value.instruction,
            time: value.time,
            dose: value.dose
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert("er" + xhr.responseText);
            alert("er" + thrownError);
        }
    });

但现在听说在localstorage中保存密码不安全,我想使用oAuth来保护身份验证。但我不知道如何在 ajax url 中使用 oAuth。请帮我这样做吗?

谢谢

【问题讨论】:

标签: ajax cordova oauth local-storage


【解决方案1】:

一般来说,本地和会话存储在存储有价值的用户信息(例如密码或 oAuth 令牌)时被认为是不安全的。

因此建议使用每个平台的原生存储方法(android 的共享首选项和 ios 的 NSUserDefaults)。您可以使用nativeStorage cordova plugin

来实现此目的

这是一个需要讨论的非常大的话题,所以如果您阅读已经回答的问题和有关科尔多瓦安全性和 oAuth 令牌的文章可能会更好,这里有一些有用的链接:

https://security.stackexchange.com/questions/71878/cordova-phonegap-refreshtoken-in-localstorage

https://cordova.apache.org/docs/en/latest/guide/appdev/security/

https://www.checkmarx.com/2015/10/23/the-worst-phonegap-security-issues-and-how-to-avoid-them/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-30
    • 2011-10-22
    • 1970-01-01
    • 2022-12-25
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多