Jump to content
  • 0

Cookie terror


michiel

Question

Posted

Even de situatie:

 

een aantal databases die via de webcompanion (en cdml) binnen een intranet beschikbaar zijn.

 

gebruikers "loggen in"; als ze de juiste username en pass weten te verstrekken wordt een cookie geplaatst waaruit blijkt dat ze beheerdersrechten hebben [FMP-setcookie:status=beheerder]

 

Op een pagina - ik noem hem detailweergave.htm - is aangegeven dat als cookie=beheerder een stukje extra pagina zichtbaar wordt voor de gebruiker.

 

De gebruiker kan op verschillende manieren op deze detailpagina komen:

- na een zoekopdracht

- via een link op een pagina waarop na een inline zoekopdracht dezelfde records zijn weergegeven die ook na een zoekopdracht gevonden zouden worden.

 

En nu het raadsel: via de eerste weg (de zoekopdracht) wordt de geplaatste cookie genegeerd

via de tweede weg, de inline, wordt de cookie wel gelezen.

In beide gevallen is de inhoud van de pagina - afkomstig uit database - gewoon leesbaar!

 

Kortom: hoe kan het dat een en hetzelfde cookie de ene keer wel gelezen wordt en de andere keer niet. Alle actie vindt plaats binnen hetzelfde intranet met dezelfde server!

 

Door voorgaande "bug" ben ik genoodzaakt gebruikers soms meerdere keren te laten inloggen... na twee keer inloggen verdwijnt het probleem overigens vanzelf!

5 answers to this question

Recommended Posts

  • 0
Posted

Het gaat dus alleen de pagina na het inloggen fout?

 

Wat ik wel even wil zeggen is dat een cookie op die manier setten nog niet meteen een garantie is voor een waterdicht systeem. Je kunt als je een beetje handig bent de waarden in cookies veranderen, waarmee heel je beveiliging naar de knoppen is. Als het van belang is dat niemand anders die rechten krijgt zul je dingen als SSL moeten gaan gebruiken, zie hiervoor ook het topic over de voordelen van Lasso.

  • 0
Posted

Luc,

 

Een toelichting is misschien nodig:

Er zijn een aantal databases. Ik open de database nieuws met de url

http://comserv:8090/html/nieuws/'>http://comserv:8090/html/nieuws/

Ik kom dan op een overzichtpagina van de database nieuws. Vanaf daar zoek ik een record in de database nieuws. Op de record detailweergave pagina is een "inlogmogelijkheid" voor de beheerders. Als ik daar inlog worden de cookies herkend en kunnen de detailpagina´s in beheerder modus worden bekeken. Vervolgens klik ik bijvoorbeeld op http://comsrv:8090/html/homepage. Ik kom dan weer op de homepage terecht van het intranet. Als ik dan weer op http://comserv:8090/html/nieuws/ klik, en weer een individueel record opvraag, lijkt het alsof het cookie niet geplaatst is. Als ik echter vanaf dezelfde homepage een link gebruik direct naar een record in de database nieuws (na een inline zoekactie in nieuws vanaf de homepage) dan zijn de cookies er wel!

 

Om het verhaal compleet te maken: als je vervolgens nog een keer inlogt (dus weer een cookie plaatst) wordt het cookie wel vanaf alle locaties herkend...

 

Je hebt gelijk met je opmerking over veiligheid. De inlogmogelijkheid is dan ook niet meer dan een drempel tegen het per ongeluk wijzigen van records. De site wordt niet door "buitenstaanders" bekeken dus kwalijke hackers kunnen er niet bij.

  • 0
Posted
Je hebt gelijk met je opmerking over veiligheid. De inlogmogelijkheid is dan ook niet meer dan een drempel tegen het per ongeluk wijzigen van records. De site wordt niet door "buitenstaanders" bekeken dus kwalijke hackers kunnen er niet bij.

Dan ben ik toch zeer benieuwt waarom je nu bezig bent om iemand rechten toe te kennen, hoe houdt jij de hackers dan buiten? Ik hoop toch niet dat je denkt dat ze deze url niet gaan raden of vinden hè.

  • 0
Posted

Luc,

 

De url is uiteraard fictief... het had ook http://broodjeaap kunnen zijn...

 

Het punt is: het gaat om een intranet. Filemaker draait op een server die geen toegang naar buiten heeft.

 

Mijn doel met de cookies is alleen om een edit-layout een beetje te kunnen afschermen om te voorkomen dat gebruikers per ongeluk op de edit-pagina komen. Zoals je weet: niemand leest gebruikshandleidingen, mensen proberen maar wat en ik wil voorkomen dat mensen per ongeluk iets wijzigen.

 

In ieder geval ben ik ondertussen van het idee afgestapt om onderhoud via intranet mogelijk te maken. Alle beheerders krijgen gewoon een filemaker client en kunnen daarin wijzigen. Via filemaker heb ik sowieso veel meer mogelijkheden, zoals ingewikkelde conditionele value lists; die zijn via cdml lastig te bouwen. Of ik moet gaan werken met frames in de pagina´s waarin dan de gerelateerde waardelijsten verschijnen en dat wordt me te complex.

  • 0
Posted

Cookies, HTML en cache

Waar wordt de cookie naar de browser geschreven? Is dat op de pagina met de lijstweergave? Wel, dan zal het niet lukken.

Eerst en vooral moet je een tussenpagina maken. Deze pagina moet de cookie schrijven en nadat dit gebeurd is, moet de gebruiker automatisch geredirect worden naar de lijstweergave of whatever.

Stel: er wordt een cookie aangemaakt bovenaan pagina A.HTML. Onderaan de pagina A.HTML weet de browser nog niet dat de cookie aangemaakt is. Daarom moet eerst de pagina ververst worden! Maar dat kun je ook niet zomaar doen: je moet een hard-refresh (opnieuw ophalen van de webserver) uitvoeren om de cache te omzeilen. Dit kun je bv doen om een variabele in de URL mee te geven (meestal op te lossen door de tijdsaanduiding mét seconden): A.HTML?nocache=20030521231005.

 

Gebruikers en cookies

Gebruikers kunnen de opties "cookies" in de browser afzetten. Een goede programmeur probeert na te gaan of de gebruiker dit gedaan heeft. Zodat de gebruiker die na het inloggen opnieuw op het inlogscherm terechtkomt, een mooie boodschap gepresenteerd krijgt (in de aard van "U hebt de functie cookies afgezet...blabla...").

 

Internet Explorer 6.0

En alsof dat nog niet genoeg is, doet Internet Explorer 6.0 er een schepje bovenop: privacy settings!

Het W3C heeft een systeem uitgedokterd voor de privacy van de webgebruiker: het 'Platform for Privacy Preferences' of kortweg 'P3P'. Dit is een systeem die het privacy-gebruik van een website vastlegt. Als een website niet kan beschrijven (of niet voldoet aan de privacy-instellingen dat de gebruiker heeft ingesteld) wat de privacy-regels zijn, dan kan het heel goed gebeuren dat er geen cookies weggeschreven worden (IE blokt ze dan automatisch). Dus moet dit opgevangen worden; via P3P.

P3P is een XML-gebaseerde opmaaktaal. Maar daarover kun je meer vinden op http://www.w3.org/P3P/. Ik ben momenteel daarover een interessant boek aan het lezen: Web Privacy With P3P van Lorrie Faith Cranor (uitg. O'Reilly - ISBN 0-596-00371-4 - ongeveer 43,45 Euro). Maar weze gewaarschuwd: het is een saai en nog niet zo'n simpele materie!

PS: Mozilla gaat binnenkort ook P3P integreren in de browser...

 

Besluit

Ik zou dus zeggen: probeer voor een inlogmethode een sessie te gebruiken (die maakt ook cookies aan, maar wordt door de browser geaccepteerd). (bv met behulp van PHP of Lasso)

Indien je gebruik maakt van CDML, dan zal je moeten een oplossing bedenken via verborgen formulier-elementen die de gebruikersnaam herbergen (maar dit is niet zo'n goed systeem als gebruikers de website op een openbare computer kunnen raadplegen...)

 

Swat,

Succes ermee!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...