nodejs:encryption/解密的节点模块?

如果访问者来自特定的其他网站(B),我希望网站(A)只能工作。

最初,我想到了使用document.referrer ,但显然它可以很容易地伪造。 猜测,我没有别的select,只能将网站A的密钥传递给网站B.

这两个网站都在node服务器上运行。 我已经传递了两个参数(比如param1 n param2 ),所以认为这个关键字以及两个站点之间共享的一些常见string(认为称为private key )会在站点A上产生某种encryption的代码,并将其添加为第三个参数并发送到站点B.

在站点B中,我将解密第三个参数(使用private key )并检查它是否与param1param2匹配,然后允许通过,否则返回401

我从来没有做过这样的事(安全相关的东西),这种方法是正确的吗? 有没有节点模块已经提供这种encryption和解密? 最后,有没有build立私钥的build议?

我写了一篇关于如何使用crypto nodejs模块完成的文章 :

aes_encryption.js:

 var crypto = require('crypto'), cipher_seed = 'some_random_characters'; var encrypt = function(text) { var cipher = crypto.createCipher('aes-256-cbc', cipher_seed), crypted = cipher.update(text, 'utf8', 'hex'); crypted += cipher.final('hex'); return crypted; }; var decrypt = function(text) { var decipher = crypto.createDecipher('aes-256-cbc', cipher_seed), decrypted = decipher.update(text, 'hex', 'utf8'); decrypted += decipher.final('utf8'); return decrypted; }; module.exports.encrypt = encrypt; module.exports.decrypt = decrypt; 

用法:

 var AES = require('path_to_aes_encryption.js'); var data = { name: 'Catalin', surname: 'Munteanu', address: 'Romania' }; // Encryption var encrypted_data = AES.encrypt(JSON.stringify(data)); // Decryption var decrypted_data = JSON.parse(AES.decrypt(encrypted_data)); 

如果您计划在一台服务器上执行encryption,而其他服务器上的解密不要忘记使用相同的cipher_seed