Avatar billede lasserasch Juniormester
20. marts 2012 - 18:31 Der er 7 kommentarer

Sikring af Web Page Method som leverer Hash nøgle

Hejsa.

Mit scenarie er :

1. Jeg har en REST Webservice som leverer nogle store JSON/XML Datasæt. Denne webservice er sikret via kryptering med private/public key som serveren hvorpå servicen ligger kender og requesteren kender. Altså vedkommende som kalder REST servicen.

De genrerer en HASH ud fra en bestemt algoritme som bl.a. indeholder deres public og private key, nærmeste kvarter, året, dag på året og nogle flere oplysninger.

Alt det virker fint. Det betyder at den hash de sender med alle requests til REST servicen udløber inden for max 7 minutter fra den er genereret.


2. Jeg har lavet en REST Webservice som fungerer som proxy.
Dvs, denne service kalder min første service.
Når den får response retur cacher den det og behandler det.

Denne service modtager en hash nøgle fra kalderen og sender med når den kalder webservice nr. 1.

3. Jeg har så også en Iphone app som kalder Webservice nr. 2.
Denne app kender naturligvis private og publickey i sin kode. Den generer en nøgle hver gang den kalder webservice nr. 2.

Alt fint her...


4. Jeg skal nu lave en webside som også skal bruge Webservice nr. 2. Men det er Jquery som skal hente data og vise på et Google Map kort.

Jeg kan selvfølgelig ikke have public/private key liggende i Client Side kode.
Derfor tænkte jeg om man kunne lave en statisk metode på den side hvor google kortet ligger og mærkede den op med WebMethod.

Denne metode skulle så retunere en string som indeholdt en gyldig Hash nøgle. På den måde ville public/private key ikke blive eksporneret og Jquery ville stadig kunne kalde WebService nr. 2.

Men nu læser jeg mig så frem til at Web PageMethods sagtens kan kaldes fra andre side (også sider fra et helt andet website). Hvilket i princippet betyder at enhver kunne bygge en webside og kalde min metode og derved få udleveret en gyldig Hash nøgle og trække data fra min Webservice nr. 2 eller 1 i ca. 7 min.

Er der ikke en eller anden måde hvorpå man kan sikre sig mod det?

Altså at en Web PageMethod kun kan kaldes fra Jquery på det domæne hvorpå den ligger?

Mvh.
LAsse
Avatar billede arne_v Ekspert
20. marts 2012 - 18:38 #1
Kort svar: nej. Din server side kode modtager et request fra client og du har ingen mulighed for at se hvad der koerer client side. En browser med det tiltaenkte JS. En hjemmelavet browser. Et program. HTTP headere er nemt at saette.

Du skal kigge paa alternativer.
Avatar billede arne_v Ekspert
20. marts 2012 - 18:41 #2
Bedste ide efter 30 sekunders taenkning: lav den web service som returnerer hash kraeve login.
Avatar billede lasserasch Juniormester
20. marts 2012 - 21:19 #3
Ok, men hvis man skal lave login til en webservice og webservicen kaldes fra Jquery. Så skal brugernavn/password vel angives i javascript, og så er man vel lige langt eller hvad?


Jeg tænkte på om man bare kunne sætte en session variabel med en eller anden dummy værdi på websiden som skal indeholde kortet.

Sådan er man f.eks sagde :

Session["allowwsrequests"] = "true";

og hver gang man kalde webservicen fra Jquery, så tjekkede om den session variabel eksisterede på serveren?

En cross site WS request kan vel ikke sætte en session variabel??

Mvh.
Lasse
Avatar billede arne_v Ekspert
20. marts 2012 - 21:27 #4
ideen var at brugeren skulle indtaste brugernavn/password for at faa adgang
Avatar billede arne_v Ekspert
20. marts 2012 - 21:30 #5
Men du er inde paa noget. Hvis brugeren allerde har logget ind i en normal web app, saa kan dit web service kald udnytte dette.

web service i web app => bare check i web service for om bruger er logget ind

web service udenfor web app => lad web app gemme noget i session og saette en cookie, JS hapser den cookie og sender den med i web service kald, web service kalder web app (ny web service) og spoerger om den er god nok
Avatar billede lasserasch Juniormester
22. marts 2012 - 08:25 #6
Lad os bare få lukket den her igen. Smid et svar...

Det virker helt fint med cookie/session validering.

Mvh.
Lasse
Avatar billede arne_v Ekspert
23. marts 2012 - 02:37 #7
ok
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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