base64编码url安全吗?

时间:2012-09-27 22:32:37

标签: node.js url base64

我正在使用node.bcrypt.js哈希返回node.js中的十六进制数字作为密码重置令牌。

user.reset_password_token = require('crypto').randomBytes(32).toString('hex'
);

在我在网址中传递令牌之前,我是否还应该对该令牌进行base64编码(即:链接重置电子邮件)?

这样做有什么好处吗?

我似乎记得base64编码可以包含正斜杠,这会弄乱路径:

   var token = user.reset_password_token;

   //is there any benefit to doing base64 encoding?
   var encoded_token = new Buffer(token).toString('base64');

   var reset_link = 'http://example.com/reset/'+ encoded_token;
   sendResetLink( reset_link );

3 个答案:

答案 0 :(得分:6)

嘿伙计们我在https://www.npmjs.org/package/urlsafe-base64使用了URLSafeBase64 nodejs LIB解决了

var email =email_lines.join("\r\n").trim();
var base64EncodedEmail = URLSafeBase64.encode(new Buffer(email));
gmail.users.messages.send({userId:"me",
        resource: {raw:base64EncodedEmail} }, callbackFn});

答案 1 :(得分:1)

base64确实可以包含正斜杠,但base32不能!

答案 2 :(得分:0)

另一个选项是base64url library

from flask import Flask
from flask import current_app


def create_app():
    app = Flask(__name__)
    # set your function
    setattr(app, 'my_func', 'function')
    return app


app = create_app()


@app.route('/')
def index():
    return getattr(current_app, 'my_func')


if __name__ == '__main__':
    app.run()