Skip to content

Commit ef9ae01

Browse files
committed
fix(xss): escape user data in ConfirmModal and soft-delete flash
Escapes group.name before passing to ConfirmModal's v-html rendered delete/archive confirmation messages in GroupActions.vue. Also escapes user name in the soft-delete flash message in UserController to prevent stored XSS when an admin deletes a user with a malicious name.
1 parent 03d2583 commit ef9ae01

2 files changed

Lines changed: 8 additions & 3 deletions

File tree

app/Http/Controllers/UserController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ public function postSoftDeleteUser(Request $request): RedirectResponse
294294

295295
if (Auth::id() !== $user_id) {
296296
return redirect('user/all')->with('danger', __('profile.soft_deleted', [
297-
'name' => $old_user_name
297+
'name' => e($old_user_name)
298298
]));
299299
} else {
300300
return redirect('login');

resources/js/components/GroupActions.vue

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@
5656
<ConfirmModal :key="'leavegroupmodal-' + idgroups" ref="confirmLeave" @confirm="leaveConfirmed"
5757
:message="__('groups.leave_group_confirm')" />
5858
<ConfirmModal :key="'deletegroupmodal-' + idgroups" ref="confirmDelete" @confirm="deleteConfirmed" :message="__('groups.delete_group_confirm', {
59-
name: group.name
59+
name: escapeHtml(group.name)
6060
})" />
6161
<ConfirmModal :key="'archivegroupmodal-' + idgroups" ref="confirmArchive" @confirm="archiveConfirmed" :message="__('groups.archive_group_confirm', {
62-
name: group.name
62+
name: escapeHtml(group.name)
6363
})" />
6464
</div>
6565
</template>
@@ -100,6 +100,11 @@ export default {
100100
}
101101
},
102102
methods: {
103+
escapeHtml(str) {
104+
const el = document.createElement('span')
105+
el.textContent = str
106+
return el.innerHTML
107+
},
103108
leaveGroup() {
104109
this.$refs.confirmLeave.show()
105110
},

0 commit comments

Comments
 (0)