23. december 2006 - 21:36Der er
34 kommentarer og 1 løsning
Skjul msgID=x
Jeg benytter dette lille script til flere formål:
If Request.QueryString("msgID") = 1 Then msgID = "Besked 1" ElseIf Request.QueryString("msgID") = 2 Then msgID = "Besked 1" End If
Hvis man nu i adresselinien udskifter msgID=1 til msgID=2 osv., så kan man jo bladre alle ID'erne igennem og se hvad de betyder. Kan man på en eller anden fylde en masse volapyk på, så man ikke umiddelbart kan se ID'en, men stadigvæk operere med værdierne? F.eks. kunne msgID=1 måske kamufleres som msgID=6751243965, men jeg kunne stadig operere med værdien 1? Eller for at gøre det lidt sværere, kunne man sætte msgID til 832 istedet for 1. Håber spørgsmålet ikke blev for kryptisk :o)
HTTP GET har heller aldrig være lavet til at holde noget hemmeligt. Jeg går ud fra at steen_hansen bare vil have en simpel beskyttelse til at holde de nysgerrige brugere på afstand.
If VarMsgID1 = 3546484651566 Then msg = "Besked 1" ElseIf VarMsgID2 = 575468344815465 Then msg = "Besked 2" End If %>
Kan man forøvrigt ikke lave eb funktion, der kan skifte værdierne 7 og 48079? Jeg sætter gerne point op, hvis du kan lave det smart og funktionelt. Umiddelbart har jeg lidt svært ved at se hvordan, men jeg er heller ikke så skrap :o)
Du kan skam godt lave base64 encode/decode , du skal bare lige finde et script til det. ASP har jo stort set ingen værdier indbygget. Du kan også f.eks. bruge md5 , dog er md5 envejs.
Ideen var jo at det netop automatisere din "encryption". Men jeg holder stadigvæk fast i at det giver en falsk sikkerhed.
Kan ikke se det store problem i at folk kan se id'et.
"Ja, det er ikke meningen de umiddelbart skal kunne bladre gennem de forskellige messageID's :o)"
De vil altid kunne gøre det, sålænge du bruger en eller anden form for user-input. Så du bør altså lave en anden form for sikkerhed.
Hvad med at lade brugeren logge ind først? så gemme et ID der passer til deres message-id i en session, og bruge det til at hente værdien med ? Det ville være sikkert nok.
Hvis jeg har forstået det korrekt, er det også lige meget om man kan se det pågældende id. Det vigtige er, at man ikke kan gætte sig til andre id-værdier.
Ved at vælge tilfældige værdier for id, vil det ikke være muligt
Det kommer jo lidt an på hvad ID'et er, hvor det anvendes, og hvad det anvendes til.
Det er ikke så meget det enkelte ID, men lige så meget for at lære lidt om sikkerhed. Jeg fulgte med i http://www.eksperten.dk/spm/747482#rid6530986, og er der ting, man ikke lige tager højde for, kan det jo gå galt :o/
Normalt gør jeg meget ud af at beskytte med Session("username"), men vil meget gerne gøre det bedst muligt :o)
windscape og plx, hvis en af Jer (eller Jer begge) har mod på og lyst til at hjælpe mht. GUID-generator, mod point, så vil jeg blive glad. Jeg sætter gerne point op til maks, men jeg ved ikke om, der er stemning for det.
Dvs. en slags GUID-generator er umiddelbart den bedste løsning?
Om guid er den bedste løsning, ved jeg ikke. Det kommer også an på hvordan og til hvad det skal bruges. Hvis man gerne må kunne se og gætte sig frem til andre id'er, så er almindelige tal-værdier lige så gode.
Hvis du skal bruge det sammen med sql:
guid = Request.QueryString("guid") sql = "SELECT * FROM tabel WHERE guid='" & guid & "'"
uden ekstra kontrol af guid'en, så vil du være et let offer
Det er ikke fordi jeg vil være til besvær, jeg er bare lidt lost her. Jeg kan ikke gennemskue hvad der sker, hvad der skal stå i DB, hvordan QueryString skal se ud etc. :o/
Det, der sker med guid, når man forsøger at ændre 142 til 141 er, at man redirectes til en bestemt side ..... eller .....?
Ud fra den fik jeg lavet disse funktioner: Function secureID(fID) dim fTmp, fSecurityTekstString fSecurityTekstString = "HemligKode" fSecurityTekstString = fSecurityTekstString & date() fTmp = md5(fSecurityTekstString & fID) fTmp = left(fTmp, 10) & fID & mid(fTmp,11) secureID = fTmp end Function
Function tjeckSecureID(fKode) dim fTmp, fRetur, fHash, fID, fSecurityTekstString fSecurityTekstString = "HemligKode" fSecurityTekstString = fSecurityTekstString & date() fTmp = fKode if len(fTmp) <= 32 then fRetur = false else fHash = left(fKode,10) & mid(fKode,11+len(fKode)-32) fID = mid(fKode,11, len(fKode)-32) if md5(fSecurityTekstString & fID) = fHash then fRetur = true else fRetur = false end if end if tjeckSecureID = fRetur end Function
Function getSecureID(fKode) if tjeckSecureID(fKode) then getSecureID = mid(fKode,11, len(fKode)-32) else Response.write "Forkert ID." response.end end if end function
Du skal ændre "HemligKode" til noget andet ala "jhsbd6723kjhs78123". Også kan du evt vælge at ændre ID positionen fra 10 til et andet sted i hashkoden. Du skal bare ændre alle 10 og 11 til f.eks 17 og 18 for at flytte ID'et.
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.