Files

94 lines
4.2 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends "base.html" %}
{% block title %}Security-Check{% endblock %}
{% block content %}
<h1 class="page-title">Reichweiten-Check
<span class="badge badge-muted">Access Control</span>
</h1>
<div class="card">
<p class="hint" style="display:block">
Prüft, was ein <b>normaler Studenten-Login</b> (dein Account) von fremden Personen
abrufen kann. Angezeigt werden ausschließlich <b>Booleans und Anzahlen</b> –
keine Feldwerte, keine Speicherung. Grün = vom CIS sauber geschützt,
Rot = Daten liegen mit diesem Account offen.
</p>
<div class="form-row">
<div class="field">
<label>Ziel (optional)</label>
<input type="text" id="probe-uid" placeholder="leer = Zufallsstudent">
</div>
<button class="btn btn-primary" id="probe-btn" onclick="runProbe()">Check starten</button>
</div>
<p id="probe-status" class="muted"></p>
<table class="data" id="probe-table" style="display:none">
<thead><tr><th>#</th><th>Prüfung</th><th>Ergebnis</th><th>Details</th></tr></thead>
<tbody></tbody>
</table>
<p class="hint" id="probe-target" style="display:none"></p>
</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&nbsp;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&amp;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&nbsp;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&nbsp;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&nbsp;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-&gt;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&nbsp;2 dynamisch validiert.</td>
</tr>
</tbody>
</table>
</div>
{% endblock %}