Ich habe eine App, wo ich versuche, die userID
zu verschlüsseln, bevor Sie es an die Client-Seite senden. Der Grund dafür ist, weil ich EJS bin mit als verlockend Motor, der bedeutet, dass ich Code, wo ich die userID
wie so bin mit:Entschlüsseln von Daten innerhalb eines Knotens/express.js Route
<body ng-init="getAllPosts('<%= user._id' %>)"></body>
Das Problem dabei ist, dass, wenn jemand tut „Element untersuchen“ auf jeden Browser können sie deutlich ihre userID
sehen. Siehe Bild unten zum Beispiel:
um dieses Problem zu beheben, begann ich meinen Encrypting userID
, bevor ich an den Client gesendet, wie s0:
app.get('/profile',isLoggedIn,function(req, res) {
var user = req.user;
var uid = encrypt(JSON.stringify(user._id));
res.render('profile.ejs', {
userID: uid
});
});
Dies die ID Verschlüsselt erfolgreich, wie Sie sehen im Bild unten:
Das Problem:
Das Problem ist, dass ich erfolgreich die ID entschlüsseln kann aber auch sie nach entschlüsselt Ich kann die Daten aus der Datenbank nicht erhalten. Ich habe versucht, die entschlüsselte ID in meine Route einzufügen und die Daten werden erfolgreich übertragen. Es ist wie es liest nicht die entschlüsselte ID aus der Variablen, aber funktioniert, wenn Sie es selbst kopieren.
Heres der Code:
app.get('/user/posts/:id', isLoggedIn, function(req, res){
var x = decrypt(req.params.id)
Posts.findOne({userID:x}, function(err, post){
if(err)
console.log(err);
else if(post){
res.json(post);
} else if(!post){
res.json({message: "No Posts document exists for this user"});
}
});
});
, was zu beachten ist, dass die Variable x
entschlüsselte ID enthält, ist Textform!
Gerade für weitere Informationen hier sind meine Encrypting & Decrypting Funktionen:
//Encrypt Data
function encrypt(text){
var cipher = crypto.createCipher(algorithm,key)
var crypted = cipher.update(text, 'utf8', 'base64')
crypted += cipher.final('base64');
console.log("CRYPTED " + crypted);
return crypted;
}
//Decrypt Data
function decrypt(text){
var decipher = crypto.createDecipher(algorithm,key)
var dec = decipher.update(text, 'base64', 'utf8')
dec += decipher.final('utf8');
console.log("DECRYPTED " + dec);
return dec;
}
Ausgabe von Decrypt Funktion: