Avatar billede steen_hansen Forsker
23. december 2006 - 21:36 Der 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)
Avatar billede kalp Novice
23. december 2006 - 21:42 #1
Det er ikke noget jeg har prøvet, men det er vel dette du gerne vil

http://www.4guysfromrolla.com/webtech/012000-1.shtml
Avatar billede plx Nybegynder
23. december 2006 - 21:45 #2
behøver det være mere kompliceret, end at du blot udvælger nogle tilfældige værdier, som msgID kan antage?

If Request.QueryString("msgID") = "sdf907q2398" Then
    msgID = "Besked 1"
ElseIf Request.QueryString("msgID") = "08912" Then
    msgID = "Besked 1"
End If
Avatar billede steen_hansen Forsker
23. december 2006 - 21:48 #3
kalp, det er rigtig godt. Lidt langt, men nok temmelig sikkert :o)

plx, det behøver det absolut ikke :o)

Smider I et svar begge to?
Avatar billede windcape Praktikant
23. december 2006 - 22:13 #4
steen_hansen du kunne jo f.eks. lave en base64 encoding af værdien :)
Avatar billede steen_hansen Forsker
23. december 2006 - 22:28 #5
windcape, kan du forklare nærmere?
Avatar billede plx Nybegynder
23. december 2006 - 22:47 #6
hvis du kører en tekst igennem base64_encode() får du noget lidt mærkeligt output, som du kan bruge til id

teksten som gøres nomal igen, ved at køre den igennem base64_decode()

base64 er nok mere beregnet til at lave binære filer om til noget, som er 7-bit ascii kompatibelt. Den er ikke beregnet til at holde noget hemmeligt
Avatar billede windcape Praktikant
23. december 2006 - 23:01 #7
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.

"Security though obscurity is bad security".
Avatar billede steen_hansen Forsker
23. december 2006 - 23:08 #8
Ok. Er det en PHP-funktion? Kender minimalt til PHP :o)

Man kan jo også lave lidt fikumdik ved at sige, at

mydoc.asp?msgID=3546484651573
mydoc.asp?msgID=575468344863544

<%
Dim ValueMsg, VarMsgID1, VarMsgID2
ValueMsg = Request.QueryString("msgID")
VarMsgID1 = ValueMsg - 7
VarMsgID2 = ValueMsg - 48079

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)
Avatar billede steen_hansen Forsker
23. december 2006 - 23:12 #9
Ja, det er ikke meningen de umiddelbart skal kunne bladre gennem de forskellige messageID's :o)
Avatar billede windcape Praktikant
23. december 2006 - 23:12 #10
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.
Avatar billede windcape Praktikant
23. december 2006 - 23:14 #11
"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.
Avatar billede plx Nybegynder
23. december 2006 - 23:18 #12
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
Avatar billede windcape Praktikant
23. december 2006 - 23:19 #13
Så lad være med at bruge numre som IDer, og bruge et guid ?
Avatar billede steen_hansen Forsker
23. december 2006 - 23:21 #14
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)
Avatar billede steen_hansen Forsker
23. december 2006 - 23:22 #15
guid? :D
Avatar billede windcape Praktikant
23. december 2006 - 23:22 #16
http://en.wikipedia.org/wiki/Guid

Så kan folk helt sikkert ikke gætte sig til det :-)
Avatar billede windcape Praktikant
23. december 2006 - 23:25 #17
Kiggede lidt rundt på løsninger, følgende script skulle vist kunne lave et. Men ASP ser ikke ud til at supporte ægte GUID/UUID generation.

nBaseID = Right(Abs(DateDiff("s",Now,#1/1/1998#)),8)
varOrderNumber = Right(Year(now),2) & Month(now) & "-"
                  & Left(nBaseID,2) & "-" & Mid(nBaseID,3,3)
                  & "-" & Right(nBaseID,3)
Avatar billede steen_hansen Forsker
23. december 2006 - 23:28 #18
Det er en funktion du har lavet? Hvordan skal det sættes op i f.eks.

Respoanse.Redirect "mydoc.asp?msgID=2"
Avatar billede windcape Praktikant
23. december 2006 - 23:39 #19
Nej, det var bare en form for GUID generator.

Ideen er at du så laver en liste og GUIDs som hænger sammen med din liste af IDer , i f.eks. en database, og så laver en opslag ud fra det :)
Avatar billede plx Nybegynder
23. december 2006 - 23:41 #20
Omkring problemet i den tråd du linker til, så er der også givet en løsning, som holder 100%

nemlig at kontrollere, om input rent faktisk er numerisk, inden værdien indsættes i den sql, som sendes til databasen.
Avatar billede windcape Praktikant
23. december 2006 - 23:43 #21
Man kan jo også bare typecaste værdien... hvis VB altså supporter typecast, kan ikke huske det :)
Avatar billede steen_hansen Forsker
23. december 2006 - 23:47 #22
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?
Avatar billede steen_hansen Forsker
23. december 2006 - 23:47 #23
typecaste?
Avatar billede steen_hansen Forsker
23. december 2006 - 23:50 #24
Avatar billede plx Nybegynder
23. december 2006 - 23:56 #25
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
Avatar billede steen_hansen Forsker
24. december 2006 - 00:10 #26
Dvs. QueryString skal se nogenlunde sådan her ud:

MenuGuid=xxx&GroupGuid=yyy

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 .....?
Avatar billede steen_hansen Forsker
24. december 2006 - 00:31 #27
Jeg tror det er på tide at finde sengen. Jeg er nok ikke på i morgen (i dag), men kigger ind 1. juledag. Kan I have en god jul - og foreløbig tak :o)
Avatar billede steen_hansen Forsker
26. december 2006 - 23:43 #28
Ingen gode forslag? Jeg sætter hellere end gerne point op, hvis I vil hjælpe med en løsning.
Avatar billede fennec Nybegynder
27. december 2006 - 09:38 #29
Vi fik lavet en funktione i et tidligere ?:
http://www.eksperten.dk/spm/695272

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

Kør brug af MD5 funktionen som kan hentes her:
http://www.asp-faq.dk/article/?id=52
Avatar billede fennec Nybegynder
27. december 2006 - 09:41 #30
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.
Avatar billede fennec Nybegynder
27. december 2006 - 09:44 #31
Direkte link til MD5 kildefilen:
http://asp-faq.dk/kildekode/md5.zip
Avatar billede steen_hansen Forsker
27. december 2006 - 21:11 #32
fennec, det ser godt nok lovende ud. Jeg kigger på det senere.
Avatar billede steen_hansen Forsker
21. april 2007 - 10:12 #33
Jeg tror liiige vi skal have afsluttet denn her. Smider du et svar, fennec? Jeg fik aldrig testet det, men alt tyder jo på, at det virker :)
Avatar billede fennec Nybegynder
23. april 2007 - 08:20 #34
.o) <-- One Eyed Jack
Avatar billede steen_hansen Forsker
23. april 2007 - 16:12 #35
Takker :)
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
Kurser inden for grundlæggende programmering

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