繁体   English   中英

如何为应用创建安全令牌?

[英]How to create a secure token for an app?

我正在开发一个简单的应用程序,该应用程序允许用户登录。 我使用ajax函数将值传递到PHP文件(在另一个域上)。 如果用户和密码正确,则页面显示回显“成功”,并且im使用该词来验证并创建随机密钥以允许用户访问私有页面。

我读到您还可以添加标头令牌,也可以将其添加到当前代码中。Iam正在开发“ app”,希望有人可以指出正确的方向,以找到最佳方法。

var username = $("#username").val();
    var password = $("#pass").val();


    var dataString = "username="+username+"&pass="+password+"&insert="; 
    $.ajax({
        type: "POST",
        url: "url",
        data: dataString,
        crossDomain: true,
        cache: false,
        beforeSend: function() {$('#loginButton').val('Connecting...');},
        success: function(data)
        { 
            if(data == " success")
            {
                alert("Success");
                returnHash(); 
            }

            if(data == " Login failed")
            {
                alert("There's a problem with username/password!");
                $('#loginButton').val('Submit');  
            }
        }
    });

function returnHash()
{
    letters = "abcdefghijklmnopqrstuvwxyz1234567890".split("");
    window.token=""; 
    for(i=0;i<64;i++){
         window.token += letters[Math.floor(Math.random()*letters.length)];
    }
    success();
}

要创建真正的唯一哈希,请使用当前时间以及随机生成的数字,如下面的代码所示:

var dateForHash = (new Date()).valueOf().toString();
var createRandomNum = Math.random().toString();
crypto.createHash('sha1').update(dateForHash + createRandomNum).digest('hex');

您还可以使用crypto.randomBytes() -此哈希值是实际唯一的,但不是理论上的。

var hash = crypto.randomBytes(20).toString('hex');

我会推荐这种使用方式的第二种方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM