Avatar billede teleskop Nybegynder
04. juni 2008 - 13:33 Der er 8 kommentarer og
1 løsning

Webservice og sikkerhed

Hej

Hvordan kan jeg sikre en webservice mod uaftoriserede kald?
Jeg bruger scriptmanageren til at registrer min webservice.
Avatar billede erikjacobsen Ekspert
04. juni 2008 - 13:47 #1
Hvad er et uautoriseret kald for dig?

Hvis du kun må kaldes fra bestemte IP-numre, så kontroller det.
Eller du kan lægge et password i en ekstra parameter i hvert kald, og kontrollere det.
Avatar billede teleskop Nybegynder
04. juni 2008 - 14:17 #2
Ja det var måske nok lidt kort formulieret.

Det er en webservice som smider data i databasen, og den kan kaldes af alle.

Som det er nu kan man kalde webservicen i URL'en og få vist alle metoder der ligger i den, og det er ikke fedt! Man skal kun kunne kalde webservicen fra mit website.

Jeg tænker bl.a. på om det er muligt at blokere webservicen så man ikke kan få fat i den via GET eller POST, men kun SOAP protokollen.

Ellers tænker jeg der er nogle best practices eller "Standarter" for hvordan man bedst sikre sine webservices.
Avatar billede erikjacobsen Ekspert
04. juni 2008 - 14:42 #3
"og den kan kaldes af alle" - jamen, hvad er så kriteriet for hvem der må kalde den?
Avatar billede teleskop Nybegynder
04. juni 2008 - 15:10 #4
Eksempel:
En bruger vil tilføje en anden bruger som ven.

Brugeren trykker på et link som på OnClick kalder javascript funktionen
AddFriend(UserID_ConnectFrom,UserID_ConnectTo)

Denne function kalder så min webservice som smider dataene i db.

Denne webservice er så totalt åben for alle requests, eksempelvis hvis man kalder den fra url'en. Det som jeg sådan set gerne vil vide er hvordan jeg sikre at kaldet til min webservice er fra en af mine js funktioner og hvordan jeg sikre at man ikke kan kalde min webservice fra url'en.

Samt evt. andre sikkerheds overvejelser man bør overveje når man arbejder med webservices.
Avatar billede sherlock Nybegynder
04. juni 2008 - 15:15 #5
Avatar billede mikalj Nybegynder
04. juni 2008 - 16:15 #6
Så længe du bruger javascript til at kalde webservicen direkte, vil jeg næsten påstå at det er umuligt at sikre det på nogen måde. Din javascript kode er frit tilgængelig for enhver der besøger de sider der bruger det. Så man vil bare kunne aflure hvordan du foretager kaldet til din webservice, og så lave noget der udnytter det.

En mulighed ville være at foretage et kald til en .aspx side på din server, og lade den foretage kaldet til din webservice. Det må være muligt at tilgå session, og derfor brugerens detaljer, før du foretager kaldet til din webservice på den måde.
Avatar billede erikjacobsen Ekspert
04. juni 2008 - 18:25 #7
Du bør i din webservice kunne aflæse sessions-variabler.
Avatar billede teleskop Nybegynder
05. juni 2008 - 14:25 #8
Jep jeg kan godt tilgå sessions på ws.

Jeg fandt en god forum diskussion her:
http://forums.asp.net/p/1200371/2113890.aspx

Som ledte mig hen til løsningen her:
http://weblogs.asp.net/rashid/archive/2007/09/20/asp-net-ajax-web-service-security.aspx

Som jeg ser det er man nødt til at sende noget krypteret data med i headeren på ws.

Og så huske at disable WSDL således (Så man lukker for docs på sine ws).

<system.web>
    <webServices>
      <protocols>
        <remove name="Documentation"/>
      </protocols>
    </webServices>
Avatar billede teleskop Nybegynder
05. juni 2008 - 14:28 #9
Men tak for hjælpen!

Og så skal man overveje kraftigt hvordan man vil bruges sessions hvis brugeren eks har flere vinduer åbner kan der komme nogle konflikter kan jeg forestille mig.
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