Skip to content

Commit d8b363c

Browse files
authored
Merge pull request hestiacp#2109 from jaapmarcus/fix/logout-csrf
Add csrf check logout
2 parents 02e2728 + dfbbd95 commit d8b363c

File tree

4 files changed

+11
-10
lines changed

4 files changed

+11
-10
lines changed

web/logout/index.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
11
<?php
2+
23
session_start();
34

45
// Main include
56
include($_SERVER['DOCUMENT_ROOT'] . '/inc/main.php');
7+
if ((!$_GET['token']) || ($_SESSION['token'] != $_GET['token'])) {
8+
header('location: /list/user/');
9+
exit();
10+
}
611

712
if (!empty($_SESSION['look'])) {
8-
if ((!$_GET['token']) || ($_SESSION['token'] != $_GET['token'])) {
9-
header('location: /list/user/');
10-
exit();
11-
}
1213
$v_user = escapeshellarg($_SESSION['look']);
1314
$v_impersonator = escapeshellarg($_SESSION['user']);
14-
exec (HESTIA_CMD . "v-log-action system 'Warning' 'Security' 'User impersonation session ended (User: $v_user, Administrator: $v_impersonator)'", $output, $return_var);
15+
exec(HESTIA_CMD . "v-log-action system 'Warning' 'Security' 'User impersonation session ended (User: $v_user, Administrator: $v_impersonator)'", $output, $return_var);
1516
unset($_SESSION['look']);
1617
# Remove current path for filemanager
1718
unset($_SESSION['_sf2_attributes']);
1819
unset($_SESSION['_sf2_meta']);
1920
header('Location: /');
2021
} else {
21-
if ($_SESSION['token'] && $_SESSION['user']){
22+
if ($_SESSION['token'] && $_SESSION['user']) {
2223
unset($_SESSION['userTheme']);
2324
$v_user = escapeshellarg($_SESSION['user']);
2425
$v_session_id = escapeshellarg($_SESSION['token']);
2526
exec(HESTIA_CMD . 'v-log-user-logout ' . $v_user . ' ' . $v_session_id, $output, $return_var);
2627
}
27-
28+
2829
unset($_SESSION);
2930
session_unset();
3031
session_destroy();

web/templates/includes/panel.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
<?php if (isset($_SESSION['look']) && (!empty($_SESSION['look']))) { ?>
8787
<div class="l-menu__item"><a href="/logout/?token=<?=$_SESSION['token']?>" title="<?=_('Log out');?> (<?=$user?>)" class="l-profile__logout"><i class="fas fa-arrow-alt-circle-up"></i></a></div>
8888
<?php } else { ?>
89-
<div class="l-menu__item"><a href="/logout/" title="<?=_('Log out');?>" class="l-profile__logout"><i class="fas fa-sign-out-alt"></i></a></div>
89+
<div class="l-menu__item"><a href="/logout/?token=<?=$_SESSION['token']?>" title="<?=_('Log out');?>" class="l-profile__logout"><i class="fas fa-sign-out-alt"></i></a></div>
9090
<?php } ?>
9191
</div>
9292
</div>

web/templates/pages/list_server_info.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
</div>
3333
<div class="l-profile noselect">
3434
<div class="l-menu__item"><a href="javascript:location.reload();" title="<?=_('Refresh');?>"><i class="fas fa-redo"></i></a></div>
35-
<div class="l-menu__item"><a href="/logout/" title="<?=_('Log out');?>" class="l-profile__logout"><i class="fas fa-sign-out-alt"></i></a></div>
35+
<div class="l-menu__item"><a href="/logout/?token=<?=$_SESSION['token']?>" title="<?=_('Log out');?>" class="l-profile__logout"><i class="fas fa-sign-out-alt"></i></a></div>
3636
</div>
3737
</div>
3838
</div>

web/templates/pages/list_weblog.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<div class="l-profile">
2929
<div class="l-menu__item"><a href="javascript:location.reload();" title="<?=_('Refresh');?>"><i class="fas fa-redo"></i></a></div>
3030
<div class="l-menu__item"><a href="/edit/user/?user=<?=$user; ?>" title="<?=$user?>" class="l-profile__username"><i class="fas fa-user-circle"></i></a></div>
31-
<div class="l-menu__item"><a href="/logout/" title="<?=_('Log out');?>" class="l-profile__logout"><i class="fas fa-sign-out-alt"></i></a></div>
31+
<div class="l-menu__item"><a href="/logout/?token=<?=$_SESSION['token']?>" title="<?=_('Log out');?>" class="l-profile__logout"><i class="fas fa-sign-out-alt"></i></a></div>
3232
</div>
3333
</div>
3434
</div>

0 commit comments

Comments
 (0)