Security-Seite: statische Audit-Referenz aus FH-Complete-Quellcode (benutzerberechtigung, Feldfilter basis/kontakt, foto_sperre, Modul-Pruefungen)
This commit is contained in:
@@ -26,4 +26,68 @@
|
|||||||
</table>
|
</table>
|
||||||
<p class="hint" id="probe-target" style="display:none"></p>
|
<p class="hint" id="probe-target" style="display:none"></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h2>Audit-Referenz: Wo die Rechte im Quellcode sitzen</h2>
|
||||||
|
<p class="hint" style="display:block">
|
||||||
|
Das CIS basiert auf <b>FH-Complete</b> (Open Source, <span class="mono">github.com/FH-Complete</span>).
|
||||||
|
Gefunden per Source-Review statt Raten — jede Zeile = eine Prüfung, die der
|
||||||
|
Reichweiten-Check oben abdeckt oder die das <b>Weiterentwickeln</b> der Tests erlaubt.
|
||||||
|
</p>
|
||||||
|
<table class="data">
|
||||||
|
<thead><tr><th>Stelle im Code</th><th>Mechanismus</th><th>Prüfung / Beobachtung</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="mono">profile/index.php</td>
|
||||||
|
<td>Feld-Filter: <span class="mono">$ansicht</span> hide Geburtsdatum/-ort,
|
||||||
|
Adresse, private Kontakte bei fremdem Profil; ausser mit Recht
|
||||||
|
<span class="mono">basis/kontakt</span></td>
|
||||||
|
<td>Check 2: grün = Code hält sich an sich selbst ✅</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="mono">include/benutzerberechtigung.class.php</td>
|
||||||
|
<td>Zentrale Prüfung <span class="mono">$rechte->isBerechtigt('modul/recht', oe)</span>;
|
||||||
|
Rollen/Rechte in <span class="mono">tbl_berechtigung</span>,
|
||||||
|
<span class="mono">tbl_rolleberechtigung</span></td>
|
||||||
|
<td>Audit-Kriterium: Jede Seite mit Personen-/Plandaten MUSS diese Klasse
|
||||||
|
aufrufen — fehlender Aufruf = Fund. Unsere 4 roten Checks sind genau
|
||||||
|
die Seiten ohne wirksame Prüfung (LV-Plan, Autocomplete, bild.php,
|
||||||
|
stud_in_grp).</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="mono">public/bild.php?src=person&person_id=</td>
|
||||||
|
<td>Foto-Schutz nur über <span class="mono">person.foto_sperre</span>
|
||||||
|
(dann Dummy-Bild); keine Rollenprüfung, IDs fortlaufend</td>
|
||||||
|
<td>Check 3: Foto-IDOR. FIX-Hebel für den Report: foto_sperre
|
||||||
|
default-mäßig einschalten oder Prüfung einbauen.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="mono">lvplan/stpl_week.php · stpl_kalender.php</td>
|
||||||
|
<td>Plan für beliebige <span class="mono">pers_uid</span> ohne
|
||||||
|
Berechtigungscheck</td>
|
||||||
|
<td>Check 5: jeder Login sieht fremde Termine/Räume. Ist teils
|
||||||
|
gewollt (Raumsuche) — Meldung: Umfang dokumentieren.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="mono">lvplan/lvplan_autocomplete.php</td>
|
||||||
|
<td>Autocomplete <span class="mono">benutzer</span> liefert ganzes Directory
|
||||||
|
ohne Rollenfilter</td>
|
||||||
|
<td>Check 1: 5735 Personen / 5 Requests.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="mono">extensions/FHC-Core-Anwesenheiten</td>
|
||||||
|
<td>Prüfungen deklariert pro Action im Controller
|
||||||
|
(<span class="mono">PermissionLib->isBerechtigt</span>)</td>
|
||||||
|
<td>Auf der Live-Instanz nicht installiert (404) — im Report als
|
||||||
|
"nicht testbar" vermerken.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="mono">extensions/FHC-Core-DSMS</td>
|
||||||
|
<td>eigenes Datenschutz-Modul der Plattform</td>
|
||||||
|
<td>Belegt: Feldebene ist eine konfigurierte Funktion, kein Bug —
|
||||||
|
ihre Korrektheit ist genau das, was Check 2 dynamisch validiert.</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
Reference in New Issue
Block a user