Avatar billede Jim Rasmussen Novice
28. februar 2012 - 09:32 Der er 19 kommentarer og
1 løsning

Cross site scripting

Hey

Kan nogen give mig et "Sikkert" eksempel på hvordan jeg modtager data fra et andet domæne, gerne ved brug af jQuery.

Har prøvet dette

$(document).ready(function () {
            $.ajax({
                url: "http://d-zig.com/default.aspx",
                type: "POST",
                success: function (data, textStatus, jqXHR) {
                    console.log('Success ' + data);
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    console.log('Error ' + jqXHR);
                }
            });
        });
Avatar billede olebole Juniormester
28. februar 2012 - 15:01 #1
<ole>

Det er ikke farligt at modtage en response streng fra et andet domæne. Det bliver først farligt, hvis den skal bruges til noget. Derfor er du nok nødt til at forklare, hvad du skal bruge det til. Og så kræver det jo, at der er givet tilladelse til, at bruge cross site XHR

/mvh
</bole>
Avatar billede Jim Rasmussen Novice
29. februar 2012 - 08:08 #2
Det er et lille projekt jeg er igang med (:

Men ideen er at sende et "Brugernavn" til en server på et andet domæne, hvorefter serveren sammenligner brugernevn og den url det blev sendt fra. Hvis de stemmer overens? Så sender serveren svar tilbage om at modtage de data der skal behandles. Hvilket er kommentare, email, brugernavn osv.

Dette er noget der sker inden en kommentar bliver godkendt. Og grunden til at der køre fra et andet domæne, er at dette skal kunne virke på mange sider. Men gennem den samme server. =)
Avatar billede Jim Rasmussen Novice
29. februar 2012 - 08:09 #3
Skal XHR da aktiveres på den windows server jeg har til at stå??
Avatar billede olebole Juniormester
29. februar 2012 - 16:42 #4
Skriv denne linje oppe i browserens adresselinje og tryk 'Return':

java script:document.body.style.background="red";void(0)

NB: Du skal slette det mellemrum, Eksperten indsætter mellem java og script. Hvis du copy/paster, vil visse browsere slette java script: - men så må du skrive det selv.

Anyway, så vil du se, at enhver kan indskrive JavaScript i en hvilken somhelst side på nettet - og afvikle scriptet, så det i 'den anden ende' vil se ud, som om requesten kom fra den pågældende side ... hvad det jo så også gør  *o)

Du kan bl.a. se fænomenet udfolde sig i min BB-Code Editor, når det bruges på en fredelig måde - som det, man kalder en bookmarklet. Det kan dog også bruges til langt mere skumle projekter.

Derudover er responsen en ganske almindelig tekststreng, som let kan tilgås af destruktive bøhtosser.

En langt bedre tilgang er, at siden retter en request til sit eget domæne - som igen henter date fra den remote server - og returnerer de fornødne data til serveren. Dette er dog mere 'bøvlet' at bruge i dit tilfælde - men langt mere sikkert.
Avatar billede olebole Juniormester
29. februar 2012 - 16:44 #5
Sikke en gang vrøvl, jeg der fik skrevet!  :D

"En langt bedre tilgang er, at siden retter en request til sit eget domæne/server - som igen henter data fra den remote server - og returnerer de fornødne data til siden"
Avatar billede heinzdmx Nybegynder
29. februar 2012 - 17:25 #6
Man kan omgå begrænsningen ved at sende en forespørgsel til ens eget domæne, der så server-side udfører den forespørgsel, modtager svaret, validere det, og så sender det tilbage til klienten.

Det tager lidt ekstra tid end at sende kald direkte, da serveren jo skal ind over det igen, men jeg kender ikke lige til andre muligheder. Det er muligt de findes, men jeg kender ikke til dem.
Avatar billede olebole Juniormester
29. februar 2012 - 17:43 #7
#6: Det glæder mig, du forstod #4 og kan hjælpe med en genfortælling.

At bruge sidens egen server som proxy er dog som sagt nok ikke særlig let at implementere i spørgerens projekt. Derfor er en helt anden struktur nok løsningen  *o)
Avatar billede heinzdmx Nybegynder
29. februar 2012 - 18:16 #8
Havde haft siden indløst i et stykke tid før jeg postede, havde ikke lige tjekket om du havde svaret igen ved at opdatere, og derfor så jeg ikke at den løsning allerede var beskrevet :)
Avatar billede Jim Rasmussen Novice
01. marts 2012 - 08:42 #9
Hmm. Det vil altså sige at Cross Domain  AJAX er udelukket? (:
Avatar billede softspot Forsker
01. marts 2012 - 10:31 #10
Du kan muligvis bruge JSONP i forbindelse med jQuery.ajax. Se dokumentation for .ajax her: http://api.jquery.com/jQuery.ajax/.

Der er nogle små passager om JSONP på den refererede side. Du kan måske få lidt mere info om JSONP her: http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/ omend det er en artikel af ældre dato...
Avatar billede olebole Juniormester
01. marts 2012 - 13:53 #11
Cross Domain XMLHttpRequests er ikke udelukket - og en anden mulighed er, som softspot anfører, at anvende et script tag (JSONP). Men da dit spørgsmål gik på sikkerhed, genkendelse og godkendelse, lyder ingen af delene som en fornuftig løsning.

Djævlen bor i detaljen, og uden mere præcise informationer er det ikke til at sige, om sådan en løsning er brugbar til dit projekt. Selv med de informationer kræver det, man holder tungen uhyggeligt lige i munden. Det er ikke sjældent at se erfarne udviklere træde en smule uforsigtigt - med mere eller mindre katastrofale følger.
Avatar billede Jim Rasmussen Novice
01. marts 2012 - 15:30 #12
Min plan er at lave en service for bloggere, hvor jeg vil lave en service der via ajax sørger for at sortere deres kommentare samt lave statistik og erstatte "U-ønskede" ord med eks. ***

Derfor skal jeg have bloggeren til at sende et brugernavn/password med i det request, sammen med kommentaren og informationer om forfatteren bag kommentaren. På det grundlag kan jeg med tiden hjælpe bloggere med at blokere spam. Da de alle vil hente information om kommentar forfatterene fra samme database. Samtidig kan de jo alle sammen anmelde en eventuel spammer.

Brugerenavnet skal bruges til ad adskille de forskellige bloggere og bestemme hvor vidt de har adgang til denne service / Betalt for den..

Jeg vil selfølgelig spørge på hvilket domæne requested kommer fra. Så andre bloggere ikke kan bruge samme brugernavn/password i deres request.



Håber det gav et bedre billede af hvad det skulle bruges til.. Hvor kun bloggerens brugernavn på servicen er skrøbelig.

Det vil ikke være samme password man bruger til at logge ind på servicens hjemmeside med.
Avatar billede olebole Juniormester
01. marts 2012 - 15:50 #13
Så er det efter min vurdering næppe en brugbar løsning. Statistikken vil sandsynligvis være utroværdig, og du skal være mere end meget opfindesom for at sikre, at en ubehagelig bruger ikke kan snyde dig

Idéen med at erstatte uønskede ord er heller ikke gennemtænk. Må man f.eks. skrive 'Pikasol' og må man skrive 'pikhovede' - 'røverbande' og 'røvbanan'? Det er en tabt kamp på forhånd, som i øvrigt ofte er oppe i PHP-kategorien  *o)
Avatar billede Jim Rasmussen Novice
01. marts 2012 - 22:05 #14
Havde udtænkt et lidt avanceret regex nok var løsningen på det. Men det er os lige meget! For det er ikke der problemet ligger (:

Og der er heller ikke helt tænkt igennem end nu hvad den skal kunne. Lige nu er jeg i test fasen og starter så med at få sat det mest basale op. :p

Men det skal være nemt for brugeren at implementere? :/
Avatar billede olebole Juniormester
01. marts 2012 - 22:24 #15
Det bedste er at gøre som dagbladet Politiken fornylig gjorde: At lukke for anonyme kommentarer. For at kommentere skal du være logget ind som bruger - og oprettelsen foregår med e-mail-verifikation (et link i en e-mail). Det har afstedkommet en helt ny og bedre debattone.

Modsætningen er mødestedet for vakuumpakkede badehætter - som tydeligvis primært besøges af dybt syge eksistenser!
Avatar billede Jim Rasmussen Novice
02. marts 2012 - 08:01 #16
Ja ja. Men lige nu spurgte jeg bare om alternativer til at sende oplysninger fra en server til en anden (:
Avatar billede olebole Juniormester
02. marts 2012 - 16:02 #17
Ehhhh, nå ... jeg så ikke lige et spørgsmål i #14  =)

Det er langt sikrere at sende oplysningerne fra server til server, så det ville klart være et alternativ til din oprindelige plan. Lidt mere bøvlet, men væsentligt sværere at gennemskue for 'ubehagelige' personer
Avatar billede Jim Rasmussen Novice
06. marts 2012 - 19:34 #18
Mange tak for dit svar olebole. send svar (:
Avatar billede olebole Juniormester
06. marts 2012 - 19:44 #19
Ellers tak, jeg samler ikke point. Spørg evt. andre i tråden, du mener har bidraget til en løsning. Ellers lægger du selv et svar og accepterer det, så tråden lukkes  =)
Avatar billede Jim Rasmussen Novice
10. april 2012 - 11:14 #20
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