mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 15:34:12 +01:00
🔒 N°1795 prevent CSRF on dashboard import
This commit is contained in:
@@ -1090,10 +1090,12 @@ class utils
|
||||
$sDlgTitle = addslashes(Dict::S('UI:ImportDashboardTitle'));
|
||||
$sDlgText = addslashes(Dict::S('UI:ImportDashboardText'));
|
||||
$sCloseBtn = addslashes(Dict::S('UI:Button:Cancel'));
|
||||
$sUploadDashboardTransactId = utils::GetNewTransactionId();
|
||||
$aResult = array(
|
||||
new SeparatorPopupMenuItem(),
|
||||
new URLPopupMenuItem('UI:ExportDashboard', Dict::S('UI:ExportDashBoard'), utils::GetAbsoluteUrlAppRoot().'pages/ajax.render.php?operation=export_dashboard&id='.$sMenuId),
|
||||
new JSPopupMenuItem('UI:ImportDashboard', Dict::S('UI:ImportDashBoard'), "UploadDashboard({dashboard_id: '$sMenuId', title: '$sDlgTitle', text: '$sDlgText', close_btn: '$sCloseBtn' })"),
|
||||
new JSPopupMenuItem('UI:ImportDashboard', Dict::S('UI:ImportDashBoard'),
|
||||
"UploadDashboard({dashboard_id: '$sMenuId', title: '$sDlgTitle', text: '$sDlgText', close_btn: '$sCloseBtn', transaction: '$sUploadDashboardTransactId' })"),
|
||||
);
|
||||
break;
|
||||
|
||||
|
||||
@@ -366,6 +366,7 @@ $(function()
|
||||
{
|
||||
dashboard_id: '',
|
||||
file_id: '',
|
||||
transaction: '',
|
||||
text: 'Select a dashboard file to import',
|
||||
title: 'Dahsboard Import',
|
||||
close_btn: 'Close',
|
||||
@@ -383,7 +384,7 @@ $(function()
|
||||
//me.onClose();
|
||||
};
|
||||
$('#'+this.options.file_id).fileupload({
|
||||
url: me.options.submit_to+'&id='+me.options.dashboard_id,
|
||||
url: me.options.submit_to+'&id='+me.options.dashboard_id+'&transaction_id='+me.options.transaction,
|
||||
dataType: 'json',
|
||||
pasteZone: null, // Don't accept files via Chrome's copy/paste
|
||||
done: function (e, data) {
|
||||
|
||||
@@ -1190,6 +1190,11 @@ EOF
|
||||
break;
|
||||
|
||||
case 'import_dashboard':
|
||||
$sTransactionId = utils::ReadParam('transaction_id', '', false, 'raw_data');
|
||||
if (!utils::IsTransactionValid($sTransactionId, true))
|
||||
{
|
||||
throw new SecurityException('ajax.render.php import_dashboard : invalid transaction_id');
|
||||
}
|
||||
$sMenuId = utils::ReadParam('id', '', false, 'raw_data');
|
||||
ApplicationMenu::LoadAdditionalMenus();
|
||||
$index = ApplicationMenu::GetMenuIndexById($sMenuId);
|
||||
|
||||
Reference in New Issue
Block a user