feat(cookie): Finding 'vague_duration' — unkonkrete Speicherdauer
Flaggt Laufzeit-Angaben ohne konkrete Dauer/Kriterium ('dauerhaft', 'bis zur
Loeschung', 'bis Nutzer deaktiviert', 'unbegrenzt' …) — Art. 5(1)(e) + Art. 13
DSGVO. Library-unabhaengig, gilt fuer ALLE Cookies (Coverage auf BMWs 780).
'13 Monate'/'Session'/'bis Widerruf, max. X' bleiben ok.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -79,6 +79,24 @@ def test_excessive_lifetime():
|
||||
assert el and "Art. 5" in el[0]["remediation"]
|
||||
|
||||
|
||||
def test_vague_duration_flagged_concrete_ok():
|
||||
# User-Beispiel Salesforce: "bis der Nutzer es deaktiviert" = vage.
|
||||
out = analyze_cookies([{
|
||||
"name": "Salesforce", "category": "necessary",
|
||||
"cookies": [
|
||||
{"name": "MUTEX_X", "purpose": "x",
|
||||
"expiry": "Wird solange gespeichert, bis es durch den Nutzer in seinem Browser deaktiviert wird."},
|
||||
{"name": "ok1", "purpose": "x", "expiry": "13 Monate"},
|
||||
{"name": "sess", "purpose": "x",
|
||||
"expiry": "Dieses Session Cookie wird beim Schließen des Browsers wieder gelöscht."},
|
||||
],
|
||||
}])
|
||||
vd = [f for f in out["findings"] if f["type"] == "vague_duration"]
|
||||
assert len(vd) == 1 # nur MUTEX_X; 13 Monate + Session ok
|
||||
assert vd[0]["cookie"] == "MUTEX_X"
|
||||
assert "Art. 5" in vd[0]["remediation"]
|
||||
|
||||
|
||||
def test_big_library_covers_cookie_not_in_rich_db():
|
||||
# Cookie nicht in der 35er rich-DB, aber in der grossen 2287er (big_lib).
|
||||
big = {"bmw_track_de": {
|
||||
|
||||
Reference in New Issue
Block a user