我希望网站(A)仅在访问者来自特定其他网站(B)时才能使用。
最初,我想过使用document.referrer
,但显然很容易被伪造。猜猜看,我没有其他选择,只能将密钥从网站A传递到网站B.
这两个网站都在node
服务器上运行。我已经传递了两个参数(比如说param1
n param2
),所以想到这个键,以及两个站点之间共享的一些常见字符串(认为叫做private key
)会产生一些站点A上的一些加密代码,将其添加为第三个参数并发送到站点B.
在站点B中,我将解密第三个参数(使用private key
)并检查它是否与param1
和param2
匹配,然后允许其他返回{{1 }}。
我之前从未做过这样的事情(安全相关的东西),这种方法是否正确?是否有任何节点模块已经提供这种加密和解密?最后,有关创建私钥的任何建议吗?
答案 0 :(得分:1)
我使用article nodejs模块编写了crypto如何实现此目的:
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));
如果您打算在一台服务器上进行加密,而在其他服务器上进行解密,请不要忘记使用相同的cipher_seed
。