mirror of
https://github.com/HeyPuter/puter.git
synced 2025-02-03 07:48:46 +08:00
fix(security): verify dest_node uid matches signature
This commit is contained in:
parent
e840544ee0
commit
e208b99d21
@ -1511,7 +1511,7 @@ async function get_taskbar_items(user) {
|
||||
return taskbar_items;
|
||||
}
|
||||
|
||||
function validate_signature_auth(url, action) {
|
||||
function validate_signature_auth(url, action, options = {}) {
|
||||
const query = new URL(url).searchParams;
|
||||
|
||||
if(!query.get('uid'))
|
||||
@ -1522,6 +1522,12 @@ function validate_signature_auth(url, action) {
|
||||
throw {message: '`expires` is required for signature-based authentication.'}
|
||||
else if(!query.get('signature'))
|
||||
throw {message: '`signature` is required for signature-based authentication.'}
|
||||
|
||||
if ( options.uid ) {
|
||||
if ( query.get('uid') !== options.uid ) {
|
||||
throw {message: 'Authentication failed. `uid` does not match.'}
|
||||
}
|
||||
}
|
||||
|
||||
const expired = query.get('expires') && (query.get('expires') < Date.now() / 1000);
|
||||
|
||||
|
@ -96,7 +96,9 @@ module.exports = eggspress('/writeFile', {
|
||||
return;
|
||||
}
|
||||
try{
|
||||
validate_signature_auth(req.body.destination_write_url, 'write');
|
||||
validate_signature_auth(req.body.destination_write_url, 'write', {
|
||||
uid: req.body.destination_uid,
|
||||
});
|
||||
}catch(e){
|
||||
res.status(403).send(e);
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user