Kundenansicht: Waechter-Korrekturen aus dem Abschlussreview
- Pfade ohne Ruecksicht auf Gross-/Kleinschreibung pruefen (/API/news umging die Sperre) - Tab mit Kennung, Cookie ist keine Kundenansicht mehr -> 409 statt fremder Daten - Cookie lebt 1 h laenger als die Ansicht, damit 'abgelaufen' gemeldet und protokolliert wird Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0ccdde1c28
commit
a64a996291
4 files changed
+39
-6
No files matched your search
@@ -182,3 +182,28 @@ test('abgelaufenes Cookie blockiert weder /api/auth/me noch das Einloesen eines
|
||||
assert.equal(res.status, 302)
|
||||
assert.equal(res.headers.get('location'), '/dashboard.html')
|
||||
})
|
||||
|
||||
// Abschluss-Review: Express routet ohne Ruecksicht auf Gross-/Kleinschreibung, der Waechter muss das auch
|
||||
test('Grossschreibung umgeht den Waechter nicht: /API/... wie /api/...', async () => {
|
||||
const routes = writeRoutes(MOUNTS).filter(({ method, path: p }) => !allowed(method, p))
|
||||
for (const { method, path: p } of routes) {
|
||||
const upper = p.replace(/^\/api\//, '/API/')
|
||||
const res = await call(method, upper, kv())
|
||||
assert.equal(res.status, 403, `${method} ${upper}`)
|
||||
}
|
||||
const legacy = await call('POST', '/API/news', { cookie: viewAsCookie('c1'), body: note })
|
||||
assert.equal(legacy.status, 403)
|
||||
const expired = await call('GET', '/Api/Projects', kv({ viewExpiresAt: Date.now() - 1000 }))
|
||||
assert.equal(expired.status, 401)
|
||||
})
|
||||
|
||||
test('Tab mit Kennung, Cookie ist keine Kundenansicht mehr -> 409 statt fremder Daten', async () => {
|
||||
const header = { 'x-kundenansicht': VIEW }
|
||||
for (const cookie of [customerCookie('c2'), viewAsCookie('c2')]) {
|
||||
const res = await call('GET', '/api/projects', { cookie, headers: header })
|
||||
assert.equal(res.status, 409)
|
||||
assert.deepEqual([res.body.code, res.body.kunde], ['view_replaced', 'Kunde Zwei'])
|
||||
}
|
||||
// ohne Cookie: kein fremder Kunde, die Route antwortet selbst mit 401
|
||||
assert.equal((await call('GET', '/api/projects', { headers: header })).status, 401)
|
||||
})
|
||||
Reference in new issue
Block a user