Skip to content

Commit 46d6059

Browse files
committed
Security: Blog: Add token validation for visibility and delete actions
See advisory GHSA-rpj6-p9m5-q637
1 parent ee24899 commit 46d6059

File tree

2 files changed

+25
-7
lines changed

2 files changed

+25
-7
lines changed

main/blog/blog_admin.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
}
1919

2020
$origin = api_get_origin();
21-
$action = isset($_GET['action']) ? $_GET['action'] : '';
21+
$action = $_GET['action'] ?? '';
2222

2323
if (api_is_allowed_to_edit()) {
2424
$nameTools = get_lang('blog_management');
@@ -58,11 +58,14 @@
5858
echo Display::return_message(get_lang('BlogEdited'), 'confirmation');
5959
}
6060
}
61-
if (isset($_GET['action']) && $_GET['action'] == 'visibility') {
61+
62+
$isValidToken = Security::check_token('get', null, 'blog');
63+
64+
if ($action == 'visibility' && $isValidToken) {
6265
Blog::changeBlogVisibility(intval($_GET['blog_id']));
6366
echo Display::return_message(get_lang('VisibilityChanged'), 'confirmation');
6467
}
65-
if (isset($_GET['action']) && $_GET['action'] == 'delete') {
68+
if ($action == 'delete' && $isValidToken) {
6669
Blog::deleteBlog(intval($_GET['blog_id']));
6770
echo Display::return_message(get_lang('BlogDeleted'), 'confirmation');
6871
}

main/inc/lib/blog.lib.php

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3030,16 +3030,31 @@ public static function displayBlogsList()
30303030
$visibility_icon = ($info_log[2] == 0) ? 'invisible' : 'visible';
30313031
$visibility_info = ($info_log[2] == 0) ? 'Visible' : 'Invisible';
30323032

3033-
$my_image = '<a href="'.api_get_self().'?action=visibility&blog_id='.$info_log[3].'">';
3033+
$secToken = Security::get_existing_token('blog');
3034+
3035+
$my_image = '<a href="'.api_get_self().'?'
3036+
.http_build_query([
3037+
'action' => 'visibility',
3038+
'blog_id' => $info_log[3],
3039+
'blog_sec_token' => $secToken,
3040+
]).'">';
30343041
$my_image .= Display::return_icon($visibility_icon.'.png', get_lang($visibility_info));
30353042
$my_image .= "</a>";
30363043

3037-
$my_image .= '<a href="'.api_get_self().'?action=edit&blog_id='.$info_log[3].'">';
3044+
$my_image .= '<a href="'.api_get_self().'?'
3045+
.http_build_query([
3046+
'action' => 'edit',
3047+
'blog_id' => $info_log[3],
3048+
]).'">';
30383049
$my_image .= Display::return_icon('edit.png', get_lang('EditBlog'));
30393050
$my_image .= "</a>";
30403051

3041-
$my_image .= '<a href="'.api_get_self().'?action=delete&blog_id='.$info_log[3].'" ';
3042-
$my_image .= 'onclick="javascript:if(!confirm(\''.addslashes(
3052+
$my_image .= '<a href="'.api_get_self().'?'
3053+
.http_build_query([
3054+
'action' => 'delete',
3055+
'blog_id' => $info_log[3],
3056+
'blog_sec_token' => $secToken,
3057+
]).'" onclick="javascript:if(!confirm(\''.addslashes(
30433058
api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES, $charset)
30443059
).'\')) return false;" >';
30453060
$my_image .= Display::return_icon('delete.png', get_lang('DeleteBlog'));

0 commit comments

Comments
 (0)