Root cause
Injection & unsafe execution introduced
The data accessor decodes HTML entities in the stored display name.
How AI contributed: Direct introductionPublished Dec 29, 2025 in
thorsten/phpmyfaqAll 2 findings in this repository
Provisional finding. Full causal and release verification remains incomplete.
Root cause
The data accessor decodes HTML entities in the stored display name.
Fix
The user-list template removes the raw filter so display names receive normal escaping.
Case facts
@@ -76,9 +76,14 @@ } $array = $this->configuration->getDb()->fetchArray($res); + // Decode HTML entities in display_name for backward compatibility+ if (isset($array['display_name'])) {+ $array['display_name'] = htmlspecialchars_decode($array['display_name'], ENT_QUOTES);+ }+ return $singleReturn && $field != '*' ? $array[$field] : $array; } /** * Returns the first result of the given key.@@ -237,11 +237,11 @@ </tfoot> {% endif %} <tbody> {% for user in users %} <tr class="row_user_id_{{ user.id }}" id="row_user_id_{{ user.id }}">- <td>{{ user.display_name|raw }}</td>+ <td>{{ user.display_name }}</td> <td> <a href="mailto:{{ user.email|raw }}"> {{ user.email|raw }} </a> </td>AI-assisted change 67990da958f6f5e991aeca93daa803da9fb03b66430f282aa0aaee4c978379dd · Fix 43cf1eadeef00763d4621140efe7279e5154e51f7d5adfaca90bbd594cf9d284