Avatar billede tblaster Nybegynder
18. september 2003 - 08:20 Der er 20 kommentarer og
1 løsning

Sikkerhed i cookie

Hvor god er sikkerheden i cookies. Jeg vil germe på en sikker måde lagre en brugers kode og brugernavn i en cookie som jeg så kan læse når han prøver at logge på. Derfor er det vigtigt at cookien kun kan læses fra den pågældende side og ikke fra andre.

    function setCookie(Navnpåcookie, value, expiredays)
    { var ExpireDate = new Date ();
    ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
    document.cookie = Navnpåcookie + "=" + escape(value) +
    ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
    }
Avatar billede nikolajdu Nybegynder
18. september 2003 - 08:25 #1
1. Cookien bliver gemt lokalt så ingen andre end den side der har lavet den kan læse den.
2. Og dog - Computeren kan selvfølgelig hackes.
Avatar billede tblaster Nybegynder
18. september 2003 - 08:30 #2
Jeg har fået fortalt at man på en relativ nem måde kan oprette en side og lede brugeren over på den hvor man så kan aflæse cookien. Det er dette jeg vil sikre at man ikke kan.

Jeg ved at man i asp bla kan bruge følgende:
Response.Cookies("MyCookies").Domain = "domæne.dk"
Response.Cookies("MyCookies").Path = "/Path/"
Response.Cookies("MyCookies").Secure = True
Avatar billede nikolajdu Nybegynder
18. september 2003 - 08:33 #3
Det kan du også i javascript

      function saet (name, value,3600,domaene,security) {
      var argv = saet.arguments;
      var argc = saet.arguments.length;
      var expires = (argc > 2) ? argv[2] : null;
      var path = (argc > 3) ? argv[3] : null;
      var domain = (argc > 4) ? argv[4] : null;
      var secure = (argc > 5) ? argv[5] : false;
      document.cookie = name + "=" + escape (value) +
        ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
        ((path == null) ? "" : ("; path=" + path)) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    }
Avatar billede tblaster Nybegynder
18. september 2003 - 08:50 #4
Vil følgende virke? Jeg tænker på de rettelser jeg har lavet.

  function setCookie(Navnpåcookie, value, expiredays, domain)  {
      var ExpireDate = new Date ();
      ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
      var argv = saet.arguments;
      var argc = saet.arguments.length;
      var path = (argc > 3) ? argv[3] : null;
      var domain = (argc > 4) ? argv[4] : null;
      var secure = (argc > 5) ? argv[5] : true;
      document.cookie = Navnpåcookie + "=" + escape(value) +
          ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString()) +
        ((path == null) ? "" : ("; path=/test/")) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    }

Ved benyttelse af overstående er cookien så så sikker at den ikke kan hentes fra andre sider?
Avatar billede nikolajdu Nybegynder
18. september 2003 - 08:52 #5
Når du låser den er den så sikker som cookies nu kan være.

Du kunne istedet :

  function setCookie(Navnpåcookie, value, expiredays)  {
      var ExpireDate = new Date ();
      ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
      var argv = saet.arguments;
      var argc = saet.arguments.length;
      var path = (argc > 3) ? argv[3] : null;
      var domain = "blabla.dk";
      var secure = true;
      document.cookie = Navnpåcookie + "=" + escape(value) +
          ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString()) +
        ((path == null) ? "" : ("; path=/test/")) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    }
Avatar billede tblaster Nybegynder
18. september 2003 - 09:02 #6
Kan jeg gøre følgende:

  function setCookie(Navnpåcookie, value, expiredays)  {
      var ExpireDate = new Date ();
      ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
      var argv = saet.arguments;
      var argc = saet.arguments.length;
      var path = (argc > 3) ? argv[3] : null;
      var domain = "<%= Request.ServerVariables("HTTP_HOST") %>";
      var secure = true;
      document.cookie = Navnpåcookie + "=" + escape(value) +
          ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString()) +
        ((path == null) ? "" : ("; path=/test/")) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    }

Når man gemmer den med secure hvordan bliver teksten lagret? Hvor kan jeg finde mine cookies på min computer?
Avatar billede nikolajdu Nybegynder
18. september 2003 - 09:06 #7
I dine midlertidige internetfiler

v_cookie
1
liverpoolfc.tv/
1600
1138063616
29588829
2075811744
29588636
*

;-)
Avatar billede tblaster Nybegynder
18. september 2003 - 09:06 #8
Jeg skal også have så man vælger når man oprettet cookien om den skal være sikker eller ej. Altså,
function setCookie(Navnpåcookie, value, expiredays, secure)  {

Hvor secure enten sættes til True eller False. Hvordan gøres det?
Avatar billede nikolajdu Nybegynder
18. september 2003 - 09:08 #9
function setCookie(Navnpåcookie, value, expiredays, domain, security)  {
      var ExpireDate = new Date ();
      ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
      var argv = saet.arguments;
      var argc = saet.arguments.length;
      var path = (argc > 3) ? argv[3] : null;
      var domain = (argc > 4) ? argv[4] : null;
      var secure = (argc > 5) ? argv[5] : true;
      document.cookie = Navnpåcookie + "=" + escape(value) +
          ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString()) +
        ((path == null) ? "" : ("; path=/test/")) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    }

ho ho ;-)
Avatar billede tblaster Nybegynder
18. september 2003 - 09:21 #10
Nu har jeg lavet denne:

    function setCookie(Navnpåcookie, value, expiredays, security)  {
      var ExpireDate = new Date ();
      ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
      var argv = saet.arguments;
      var argc = saet.arguments.length;
      var path = "/CIFM/"
      var domain = "<%= Request.ServerVariables("HTTP_HOST") %>";
      var secure = (argc > 5) ? argv[5] : true;
      document.cookie = Navnpåcookie + "=" + escape(value) +
        ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString()) +
        ((path == null) ? "" : ("; path=" + path)) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    }

Og kalder den med:
setCookie('SaveLogin_Brugernavn',inputBrugernavn,365,False)

Men der bliver ikke gemt nogen cookies
Avatar billede nikolajdu Nybegynder
18. september 2003 - 09:35 #11
1. Du bruger å i dit parameter
2. var secure = (argc > 5) ? argv[5] : true; Er her parameter nr 3 og ikke 5 - Væk med den.

    function setCookie(Navnpåcookie, value, expiredays, security)  {
      var expires = expiredays * 24 * 3600 * 1000));
      var path = "/CIFM/"
      var domain = "<%= Request.ServerVariables("HTTP_HOST") %>";
      var secure = security
      document.cookie = Navnpåcookie + "=" + escape(value) +
        ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString()) +
        ((path == null) ? "" : ("; path=" + path)) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    }

setCookie('SaveLogin_Brugernavn',inputBrugernavn,365,False)

Her har du inputBrugernavn uden '' det er altså en variabel.

/Nikolaj
Avatar billede tblaster Nybegynder
18. september 2003 - 09:44 #12
Lad os lige glemme security for et øjeblik og få det andet til at virke. Følgende gemmer ikke en cookie:

    Function setCookie(Navn, value, expiredays)  {
      var ExpireDate = new Date ();
      var path = "/CIFM/"
      var domain = "<%= Request.ServerVariables("HTTP_HOST") %>";
      ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
      document.cookie = Navn + "=" + escape(value) + 
        ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString()) +
        ((path == null) ? "" : ("; path=" + path)) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
    }

Dette virkede før:
    function setCookie(Navnpåcookie, value, expiredays)
    { var ExpireDate = new Date ();
    ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
    document.cookie = Navnpåcookie + "=" + escape(value) +
    ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
    }

setCookie('SaveLogin_Brugernavn',inputBrugernavn,365)
Avatar billede tblaster Nybegynder
18. september 2003 - 09:55 #13
Jeg har fået følgende til at virke:

    function setCookie(Navn, value, expiredays)
    { var ExpireDate = new Date ();
      var path = "/CIFM/"
      var domain = "<%= Request.ServerVariables("HTTP_HOST") %>";
    ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
    document.cookie = Navn + "=" + escape(value) +
    ((path == null) ? "" : ("; path=" + path)) +
    ((domain == null) ? "" : ("; domain=" + domain)) +
    ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
    }

Hvordan får jeg den til at virke med security?
Avatar billede nikolajdu Nybegynder
18. september 2003 - 09:58 #14
Jeg forstår ikke du vælter rundt på tingene :

    function saet (name, value,expire,security) {
      var expires = expire      var path = "/CIFM/";
      var domain = "<%= Request.ServerVariables("HTTP_HOST") %>";
      var secure = security
      document.cookie = name + "=" + escape (value) +
        ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
        ((path == null) ? "" : ("; path=" + path)) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    }
Avatar billede tblaster Nybegynder
18. september 2003 - 09:58 #15
Nu virker det sku ikke igen ... det er noget lort det her
Avatar billede tblaster Nybegynder
18. september 2003 - 10:04 #16
Hvis jeg bruger overstående og dette:
setCookie('SaveLogin_Brugernavn',inputBrugernavn,365,false)

Så bliver der ikke gemt en cookie ... jeg kan ikke se hvad jeg gør galt ... det må være koden der er noget galt med.
Avatar billede nikolajdu Nybegynder
18. september 2003 - 10:07 #17
1. min funktion hedder "saet()"
2. Jeg aner stadigt ikke hvorfra du har inputBrugernavn.
Avatar billede tblaster Nybegynder
18. september 2003 - 10:11 #18
1. jeg har ændret min function til at hedde setCookie
2. Fra en form: var inputBrugernavn = loginForm.brugernavn.value
Avatar billede tblaster Nybegynder
18. september 2003 - 11:03 #19
Jeg fik det til at virke:

    function setCookie(name, value, expires, path, domain, secure) {
    var curCookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
    document.cookie = curCookie;
    }

    setCookie("SaveLogin_Brugernavn",inputBrugernavn,now);

Men nu virker det ikke når jeg vil slette cookien:

    function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
    document.cookie = name + "=" +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
    }

      deleteCookie("SaveLogin_Brugernavn");
Avatar billede tblaster Nybegynder
18. september 2003 - 11:14 #20
Fik det til at virke ... smid et svar som tak for hjælpen!
Avatar billede nikolajdu Nybegynder
18. september 2003 - 11:24 #21
svar :))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester