Dit plain text gedeelte is puur en alleen maar omdat php het als plain text aangeboden krijgt van de webserver, dit zegt niets over hoe het over de lijn is gegaan hoor ( vb SSL stuurt het encrypted over de lijn tussen client en webserver, maar tussen webserver en php is het weer plain text ) , anders kan je altijd nog SSL gebruiken, javascript bij de client het laten encoderen/ hashen met een salt die afkomstig is van je php.
ten tweede kun je de browser ( die bij pagina access de $PHP_AUTH_ opnieuw aanbieden ) niet de $PHP_AUTH_ laten invallideren (gebrek in de standaard). Door het opnieuw activeren van de authentication kun je alles wel laten invallideren maar dan krijg je ook weer die pop-up voor je.
Mijn oude methode was gewoon redirect de gebruiker naar
http://dummyuser:dummyuser@tweakers.net en zorg er in php voor dat dummyuser gewoon een uitgelogde gebruiker is en geen popup krijgt. Maar ik meen me te herinneren dat hier ooit eens een update voor IE voor is geweest wat dit weer tegenhield ( username en password meesturen in de url ) maar misschien dat je er nog iets aan hebt.
Digest authentication is ook nog geen wahalla ... support en implementatie (IE versus rest) maken het ook niet leuk.
Uiteindelijk zal ik zelf wel weer een pagina in elkaar zetten met password protection over https...misschien een java-applet/script om de data even te encrypten bij niet https en daardoor browser compatible is.
Toch jammer dat er niet een standaard methode is ....
Digest authentication is een redelijke ramp inderdaad.
Javascript heeft als groot nadeel dat als het niet goed geimplementeerd is ( challenge-response ) het zo te reverse engineeren is waardoor je het net zo goed plain text kan versturen.
Https biedt geen beveiliging voor $[server] in php zie eerder
Java heeft niet iedereen geinstalleerd staan.
Standaard methode is er wel : basic authentication, alleen heeft deze wat nadelen met uitloggen etc.
Voor je zelf iets gaat verzinnen zou ik trouwens eerst eens goed kijken of er niet een standaard script is op pear / hotscripts / weet ik veel waar want tegenwoordig hebben toch heel veel websites authenticatie methoden en is het toch wel redelijk standaard. En om dit soort dingen echt waterdicht te krijgen vereist toch wel een redelijk stuk kennis, en bij 1 gat heb je al niets aan je hele rest-beveiliging.
Vraagje : Waarom moet het systeem zo waterdicht zijn? Want plain text wachtwoorden over de lijn zijn alleen te onderscheppen met man in the middle attacks ( voorzie ik alleen grote problemen mee met bank-programmas, voor de rest vind ik man in the middle attacks te veel moeite tegen te weinig opbrengst )
En het probleem wat jij nu stelt is alleen tussen webserver en php. Over het client-webserver traject zeg je niks.
Mijn werkwijze zou zijn : 5 min zoeken op pear / hotscripts naar een authenticatie script. Even code doorlezen of de code wel defensief genoeg geschreven is. Dan nog even zoeken of er niet een algemene exploit bekend is voor deze authenticatie methode. Daarna even checken met ethereal/cookies of er niet iets plain text over de lijn heengaat.
Dan heb ik binnen ongeveer een uur een script wat alleen nog maar geimplementeerd hoeft te worden.
Terwijl als ik het zelf moest schrijven ik eerst op zoek moest gaan naar alle implementaties voor alle browsers, daarna zoeken naar wat de handigste manier is, daarna code schrijven, daarna ethereal / cookies controleren en daarna hopen dat ik alle uitzonderingen te pakken heb.
Toch al snel een uur of 4 tegenover 1.