Context
Am o colecție de pagini HTML statice (~10k pagini) generate de o aplicație asupra căreia nu am control. Aceste pagini sunt servite de NginX de la a Locație
bloc.
Paginile pot conține date sensibile. Aș dori să pot bloca afișarea paginii în funcție de identitatea utilizatorului și de „steaguri” din pagină.
Aceste steaguri pot fi implementate de către a <meta name=keyword content="flag1 flag2 flagn">
element. Când un astfel de element este prezent, „acreditările” ar trebui verificate.
Ideea mea este să scanez răspunsul la cerere înainte de a-l lăsa înapoi utilizatorului. Pentru asta am nevoie
o modalitate de a transmite răspunsul complet (antet + corp) unui cod personalizat, astfel încât elementul <head> să poată fi analizat
Dacă nu există indicatori, răspunsul este returnat nemodificat
Dacă există steaguri și utilizatorul nu are acreditări, i se cere să se identifice
Dacă există steaguri și utilizatorul are dreptul de a vedea, răspunsul este returnat nemodificat
Dacă există indicatoare și utilizatorul nu are dreptul de a vedea, este returnată o pagină de eroare în locul răspunsului
În cele din urmă, steagul <meta>
elementul este șters pentru a evita scurgerile de indicii de filtru.
un mod de a transmite acestui cod de utilizator informații despre acreditările curente (numele utilizatorului, valoarea provocării, orice informații utile, cum ar fi ștampila de identificare, â¦)
Codul utilizatorului s-ar baza pe o „bază de date” (acest termen nu implică neapărat utilizarea unui adevărat motor DB) care conține privilegii de utilizator și va implementa o funcție de timeout.
Codul utilizatorului poate fi implementat ca script FastCGI? Dacă da, care sunt directivele pentru a-i transmite răspunsul complet?
Procesele preliminare
În prezent, identificarea utilizatorului nu poate fi condiționată: când auth_basic
este activat în a Locație
, utilizatorii trebuie să se identifice, chiar și pentru a accesa pagini publice. Pot atenua acest lucru având un utilizator/oaspeți/parolă, dar nu pot avea o pagină de avertizare înainte de a solicita acreditările.
Deci, autentificarea este întotdeauna necesară. Ulterior, an Autorizare: de bază some_hash
antetul este trimis împreună cu cererea. Acest hash trebuie să fie capturat atunci când are loc autentificarea pentru accesul viitor la proprietățile privilegiate ale utilizatorilor.
Cum pot face asta?
Sunt conștient de faptul că, în starea actuală, această specificație nu oferă deloc securitate reală (vulnerabil la atacuri reluate printre altele). Vreau să creez o dovadă a conceptului înainte de a merge mai departe. Scopul meu are sens?
Există o modalitate mai simplă de a o gestiona? XSLT? (deși acreditările curente ale utilizatorului trebuie introduse în modele)