Avatar billede pablopablo Nybegynder
23. november 2007 - 15:56 Der er 58 kommentarer og
1 løsning

Php til asp.net 2.0

Hejsa...

kan I hjælpe mig med at oversætter følgende kode fra php til asp.net 2.0 / c#...?

http://ryanfait.com/articles/2007/05/23/protect-flash-swf-files-from-download/

Mvh. PabloPablo
Avatar billede nielle Nybegynder
25. november 2007 - 19:38 #1
Hvis du har en swf-fil så er jeg parat til at give den et forsøg. :^)
Avatar billede pablopablo Nybegynder
25. november 2007 - 19:45 #2
hvad tænker du på? skal jeg sende dig en SWF for at du kan teste om du kan oversætte koden? kan du ikke download en swf fra en tilfældig side eller?
Avatar billede nielle Nybegynder
25. november 2007 - 21:26 #3
Jeg skal have en SWF fil at eksperimentere med. Om det er en du laver eller om jeg får den et andet sted fra er egentligt lige meget.
Avatar billede pablopablo Nybegynder
25. november 2007 - 21:34 #4
altså vi har fx. en SWF liggende her: http://www.unicdesign.dk/banner.swf

(Men bare du kan jo bruge hvilken som helst SWF, som du kan se på nettet til at teste med. men den ovenstående ejer jeg hvis det er det du tænker på :) )
Avatar billede nielle Nybegynder
25. november 2007 - 21:50 #5
Jeg er på den. Andre er selvfølgeligt velkomne til at giver deres bud. :^)
Avatar billede pablopablo Nybegynder
25. november 2007 - 21:56 #6
Cool! Jeg venter spændt! ;)
Avatar billede nielle Nybegynder
26. november 2007 - 19:58 #7
Desværre kan jeg ikke umiddelbart oversætte PHP-koden - det lader nemlig ikke til at sessionen bliver sendt med når der kaldes på SWF-filen. Dette er en vigtig forudsætning for at den viste PHP kode skal fungere...

Heldigvis er det alligevel muligt at opnå samme effekt i ASP.Net. :^)


Opskriften:

I din web.config fil tilføjer du noget i stil med dette:

  <system.web>
    <httpHandlers>
      <add verb="*" path="*.swf" type="SwfAntiLeech.SwfAntiLeechClass, SwfAntiLeech"/>
    </httpHandlers>
  </system.web>

Det foroversager at samtlige kald efter en SWF-fil håndteres af en HttpHandler, nemlig "SwfAntiLeech".


Denne eksistere ikke på forhånd - du skal selv lave den. Opret et DLL projekt med navnet "SwfAntiLeech" og med dette indhold:

using System.IO;
using System.Globalization;
using System.Web;

namespace SwfAntiLeech
{
    public class SwfAntiLeechClass : IHttpHandler
    {
        #region IHttpHandler Members

        public bool IsReusable
        {
            get { throw new System.Exception("The method or operation is not implemented."); }
        }

        public void ProcessRequest(HttpContext context)
        {
            HttpRequest request = context.Request;

            if (request.UrlReferrer != null && request.UrlReferrer.Host != "")
            {
                if (CultureInfo.InvariantCulture.CompareInfo.Compare(
                    request.Url.Host,
                    request.UrlReferrer.Host,
                    CompareOptions.IgnoreCase) != 0)
                {
                    Reject(context);
                }
                else
                {
                    Accept(context);
                }
            }
        }

        private void Reject(HttpContext context)
        {
            context.Response.StatusCode = 404;
            context.Response.Status = "Not Found";

            // Alternativt:
            // context.Response.StatusCode = 200;
            // context.Response.ContentType = "application/x-shockwave-flash";
            // context.Response.WriteFile(context.Server.MapPath("app_data/skrid.swf"));
        }

        private void Accept(HttpContext context)
        {
            string swfFile = context.Request.PhysicalPath;  // Placering ifølge url
            swfFile = (new FileInfo(swfFile)).Name;  // Selve navnet
            swfFile = Path.Combine("app_data", swfFile);  // Kig i app_data efter filen
            swfFile = context.Server.MapPath(swfFile);  // Placering på serveren

            context.Response.StatusCode = 200;
            context.Response.ContentType = "application/x-shockwave-flash";
            context.Response.WriteFile(swfFile);
        }

        #endregion
    }
}

Dette kompileres hvorved du får en DLL fil. Upload denne til bin folderen på dit site, og du er kørende...

Læg dine SWF-filer i app_data folderen. Dine links til dem i din HTML-kode ganske som synes de skal se ud - den leder aælligevel efter dem i app_data folderen.
Avatar billede pablopablo Nybegynder
26. november 2007 - 21:57 #8
Hey! Det ser super ud!! Jeg går igang med at afprøve det nu...jeg har dog lige nogle spørgsmål mht. din kode....normalt lægger jeg mine SWF'er i forskellige mapper, altså afhængig af hvem der skal have adgang til dem. Dette styrer jeg via det integrerede "Asp.Net Configuration"...Men nu vil du have at alle skal ligge i samme mappe (App_data)...er det en speciel måde du vil sikre div. SWF'er kun at blive tilgået af den korrekte type af brugere...?

Hvad synes du selv om den måde at beskytte en SWF på? Kan du se en måde hvorpå man alligevel vil kunne downloade filen? og evt. noget mere man kan gøre for at gøre det mere sikkert?
Avatar billede nielle Nybegynder
26. november 2007 - 22:14 #9
Der er ikke noget i vejen for at du fortsat lægger filerne som du ønsker det i filstrukturen. Så skal Accept() bare ændres til:

        private void Accept(HttpContext context)
        {
            context.Response.StatusCode = 200;
            context.Response.ContentType = "application/x-shockwave-flash";
            context.Response.WriteFile(context.Request.PhysicalPath);
        }

Problemet med dette er at man så muligvis godt kan få lov til at indtaste url'et direkte til SWF-filen. Jeg kan ikke helt gennemskue om man ad den vej kan få lov til at downloade filen. Formentlig ikke, men det kan du jo afprøve.

Det kan man dog under alle omstændigheder: filen bliver jo downloadet til brugerens browser - ellers kan den ikke ses. Man skal selvfølgelig være lidt opfuíndsom for at få den, men det kan lade sig gøre.

At placere filerne i app_code vil sikre mod at man kan få fat i filerne uden om din sikkerhed. Jeg ved ikke lige hvordan dette kan kombineres med at du har forskelleige brugere med forskellige rettigheder...
Avatar billede pablopablo Nybegynder
26. november 2007 - 23:10 #10
Hej igen...jeg vil gerne have at filerne ligger i app_data mappe så...men pga. jeg bruger bruger-rettigheder...så er jeg blevet nødtil modificere kode lidt, således at den korrekte sti til "swfFile" iAccept metoden...Det ser ud til at virke, en efter Accept metoden smides exceptionen i "IsReusable"...hvorfor gør den det? jeg er ikke med på hvad denne metode gør?
Avatar billede pablopablo Nybegynder
26. november 2007 - 23:11 #11
rettelse: men efter Accept metoden smides exceptionen...
Avatar billede nielle Nybegynder
27. november 2007 - 08:40 #12
Hvilken exception får du?
Avatar billede nielle Nybegynder
27. november 2007 - 08:43 #13
IsReusable skal i øvrigt rettes til:

        public bool IsReusable
        {
            get { return true; }
        }
Avatar billede pablopablo Nybegynder
27. november 2007 - 12:13 #14
Hej igen! NU virker det tror jeg :) det hjalp at rette IsReusable...jeg kan dog ikke pt. teste det helt igennem da jeg kun kører localhost og derfor er requestet altid det samme...og jeg kan jeg hente swf'en ned ligemeget hvad...men afprøver det snart på en rigtig webserver, så skal jeg nok skrive igen!

Bare lige en ting...jeg har alle SWF filer liggende i App_Data mappen...url'en jeg skriver i HTML'en til SWF'en er fuldstændig ligemeget ik`? Den skal bare indeholde det korrekte filnavn ik`? Dvs. man kan skrive en helt forkert og forvirrende URL blot så det er undnu sværer at finde ud af hvor filen ligger henne?

Btw, kan du let downloade den SWF som de har beskyttet på denne måde? http://ryanfait.com/articles/2007/05/23/protect-flash-swf-files-from-download/webforumz.php
Jeg synes ikke at den dukker op i mine TEMP internet filer? Men måske er det bare mig, ville bare være meget rart at vide om du eller andre alligevel let kan downloade filen!
Avatar billede nielle Nybegynder
27. november 2007 - 12:45 #15
Bare lige en ting...jeg har alle SWF filer liggende i App_Data mappen...url'en jeg skriver i HTML'en til SWF'en er fuldstændig ligemeget ik`? Den skal bare indeholde det korrekte filnavn ik`? Dvs. man kan skrive en helt forkert og forvirrende URL blot så det er undnu sværer at finde ud af hvor filen ligger henne?>

Korekt på als punkter :^)
Avatar billede pablopablo Nybegynder
27. november 2007 - 12:50 #16
hehe, super! Men kan du downloade deres test fil? Kan du evt. også finde den i din TEMP mappe?
Avatar billede pablopablo Nybegynder
27. november 2007 - 13:04 #17
Derudover, hvis man ikke kan undgå at ens SWF filer gemmes i TEMP mappen (trods jeg ikke selv kan se deres SWF i min TEMP mappe) hvad pokker hjælper denne metode så? Reelt set? Det er selvfølgelig forvirrende for folk som bruger et såkaldt "Flash catcher/donwloader" program...da det blot ripper en side for SWF'en ved at travesere HTML'en for SWF-url'er...men det sidste er jo TEMP mappen...kan man virkelige ikke gøre noget ved dette problem?
Avatar billede nielle Nybegynder
27. november 2007 - 17:09 #18
Jeg kan sagtens se hvor at den bliver lagt, men når jeg kigger efter der så er den dog væk. Det skulle ikke undre mig, hvis det hele var toppet af med en besked til browseren om ikke at cache. Egentlig meget sbart hvir man vil gøre det ekstra svært at finde den.

Men selvfølgelig kan man få fat på filen, hvis man absolut vil. Det er i virkeligheden meget logisk: Hvis browseren skal kunne afspille filen er den nødt til at have den. Ergo må filen blive overføret til klient PC'en.

Hvis jeg *virkelig* ville have filen så skrev jeg bare et lille program som emulerede at det var en almindelig browser. I stedet for at slette filen efter at have modtaget den ville den så bare gemme den.
Avatar billede pablopablo Nybegynder
28. november 2007 - 08:09 #19
Hej igen...yes, jeg er men på teorien...men tiden går og folk er jo opfindsomme, så det kunne jo tænkes at der var tænkt over en løsningen på dette problem, således at det ikke var "bare lige" at snuppe ens filer...thats all...:)

Mit sidste spørgsmål er så: Hvordan gør jeg således at mine SWF filer ALDRIG bliver cached i TEMP mappen? Altså jeg har allerede sat et "Expires" META TAG i min side som gør at siden "forældes" med det samme...og det gør at apsx, SWF filer mv. downloades på ny for hvert request...MEN jeg kan dog stadig finde alle min filer i TEMP mappen...så hvad mere kræver det?
Avatar billede pablopablo Nybegynder
28. november 2007 - 09:01 #20
jeg har prøvet med følgende kode, for at undgå at browseren cacher/gemmer filer i TEMP mappen:

HtmlMeta HM_NoCache = new HtmlMeta();
HM_NoCache.HttpEquiv = "PRAGMA";
HM_NoCache.Content = "NO-CACHE";
Header.Controls.Add(HM_NoCache);

Adobe ref: http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14743&sliceId=2
Avatar billede pablopablo Nybegynder
28. november 2007 - 09:01 #21
Glemte lige at sige, at det ovenstående kode, ikke ser ud til at ændre noget? Har du en ide til hvorfor?
Avatar billede pablopablo Nybegynder
28. november 2007 - 09:42 #22
btw, jeg kører med IE 7.0...
Avatar billede nielle Nybegynder
28. november 2007 - 19:11 #23
Hvis du laver en Vis Kilde på den resulterende kode, ser du så koden for den meta?
Avatar billede pablopablo Nybegynder
28. november 2007 - 21:41 #24
yep
Avatar billede nielle Nybegynder
28. november 2007 - 21:48 #25
Så har jeg ikke noget bud :^|
Avatar billede nielle Nybegynder
28. november 2007 - 21:52 #26
Du kan evt. prøve at sætte den der meta på respons'et i Accept() funktionen, men jeg ved ikke rigtihgt om det vil virke på nogen måde.
Avatar billede pablopablo Nybegynder
28. november 2007 - 21:53 #27
kan du selv få en fil til ikke at blive gemt i TEMP mappen?
Avatar billede nielle Nybegynder
28. november 2007 - 21:57 #28
Det har jeg vist ikke sagt :^)
Avatar billede pablopablo Nybegynder
28. november 2007 - 21:59 #29
men det er det jeg søger og som jeg spurgte om : 28/11-2007 08:09:54
Avatar billede nielle Nybegynder
28. november 2007 - 22:04 #30
Ja, det er jeg godt klar over, men jeg kan desværre ikke lige give en løsning på den. Den meta burde have gjort jobbet...
Avatar billede nielle Nybegynder
28. november 2007 - 22:05 #31
Men prøv da 28/11-2007 21:52:25 og se hvad der sker.
Avatar billede pablopablo Nybegynder
28. november 2007 - 22:16 #32
YOU.Equals(genius) == TRUE!!!!!

Damn you are good! :)
Avatar billede pablopablo Nybegynder
28. november 2007 - 22:23 #33
Du lægger bare et svar champ!
Avatar billede nielle Nybegynder
28. november 2007 - 22:29 #34
@}-`-,---

Svar :^)
Avatar billede pablopablo Nybegynder
28. november 2007 - 22:33 #35
Det trick vil man jo kunne gøre med alle typer af filer, ikke sandt? Det kræver vel blot at man opretter en dll for hver fil type...?
Avatar billede nielle Nybegynder
28. november 2007 - 22:40 #36
Korrekt. Og ja, en HTTP-handler er matchet med en bestemt fil type. Alternativt kan man lave et HTTP-modul som kan klare mange forskellige typer af requests.
Avatar billede nielle Nybegynder
28. november 2007 - 22:43 #37
Du kan finde et eksempel på noget modul-kode her:

http://www.eksperten.dk/spm/807799
Avatar billede pablopablo Nybegynder
28. november 2007 - 22:51 #38
okay! Jeg kigger på det forskellige og vender tilbage hvis jeg skulle have flere sprøgsmål. Indtil da, super mange tak for hjælpen!
Avatar billede pablopablo Nybegynder
07. december 2007 - 17:01 #39
Hej igen! Jeg er desværre løbet ind i nye problemer...den dll du lavede virker helt efter hensigten når jeg kører det hele lokalt! Men når jeg publisher mit asp.net 2.0 projekt og uploader det til en server på internettet - ja så vises Flash / SWF filer slet ikke...det er bare hvidt det hvor de skulle have været...den kan åbenbart ikke finde filerne??

Ide til hvordan jeg løber dette?? Opretter gerne et nyt spørgsmål hvis du ønsker points! Bare sig til!
Avatar billede nielle Nybegynder
08. december 2007 - 09:42 #40
Umiddelbart kan jeg ikke lige se hvorfor den skulle fejle...

Har du administartor rettigheder til serveren og/eller har du adgang til et sted hvor du kan udskrive (f.eks. til filsystem eller en database)? For så kan vi lave noget debugging.
Avatar billede pablopablo Nybegynder
13. december 2007 - 18:19 #41
Hey, jeg har nu aktiveret trace dedugging lokalt og på serveren...lokalt kan jeg at at dll'en bliver kaldt, men på remote serveren kan jeg ikke se at den kaldes...:( ??

Nogen ide`?
Avatar billede pablopablo Nybegynder
13. december 2007 - 18:42 #42
Jeg kan fortælle at det ikke har noget at gøre med, at jeg brugte App_Data mappen...har nemlig lige prøvet at ligge filerne i en anden mappe, samt at rette stien i dll'en....men uden held...
Avatar billede nielle Nybegynder
13. december 2007 - 22:57 #43
Du har ikke svaret på 08/12-2007 09:42:02 endnu.
Avatar billede pablopablo Nybegynder
13. december 2007 - 23:12 #44
har du en mail jeg kan sende info til?
Avatar billede pablopablo Nybegynder
13. december 2007 - 23:13 #45
btw...

kan det skyldes at IIS'en skal konfigureres før det virker? Det kræver jo bare ikke noget specielt lokalt...men det er måske noget andet?

http://msdn2.microsoft.com/en-us/library/46c5ddfy(VS.80).aspx

Tjek det nederste afsnit.
Avatar billede pablopablo Nybegynder
13. december 2007 - 23:32 #46
du kan teste det her: http://www.unicdesign.dk/HemoScan/Default.aspx
Samt tjekke trace.axd

Serveren på internettet bliver host ude...så jeg kan ikke selv pille ved den...
Avatar billede pablopablo Nybegynder
14. december 2007 - 15:51 #47
Jeg har forresten oprettet den nye tråd hvis du ønsker flere points!
http://www.eksperten.dk/spm/810362
Avatar billede nielle Nybegynder
14. december 2007 - 21:03 #48
13/12-2007 23:12:47> Et simpelt ja eller nej er fint nok. Jeg havde ikke nogen planer om selt at skulle logge op mod dine servere eller noget. Jeg ville bare gerne vide hvor at vi kunne skrive eventuelt debug til - til en fil eller til en database.

13/12-2007 23:13:13> Jeg har ikke den store erfaring mht. at administrere en IIS. Men umiddelbart kan jeg ikke se at der skal gøres noget specielt ud over det der allerede er beskrevet ovenfor. Det kan selvfølgeligt være at webhotellet har disablet muligheden for at bruge HttpHandlere...

13/12-2007 23:32:40> Er der en flash på den side?

14/12-2007 15:51:56> Det er skam ikke nødvendigt. :^)
Avatar billede pablopablo Nybegynder
15. december 2007 - 15:22 #49
Jeg forstår ikke helt hvad du gerne vil have af info...mht. server...ja jeg har en databasen vi kan bruge til test...jeg har også adgang til serveren via FTP, men sitet ligger som sagt hos en udbyder og jeg kan derfor ikke selv pille fysisk ved serveren...
Men kan selvfølgelig ringe til dem, hvis vi ved hvad der skal ændres...

Ja, den hvide firkant på siden er en flash-container hvori, der ikke er loadet nogen SWF fil pga. den ikke kan finde den...pga. HttpHandleren ikke bliver brugt...

Så hvad skal jeg gøre nu?
Avatar billede pablopablo Nybegynder
15. december 2007 - 16:03 #50
oooh my gosh....har lige snakket med udbyderen igen...fordi jeg ikke følte at dem jeg snakkede med de sidste par gange var overbevisende...og nu sagde en anden fanme at det IKKE er muligt, at bruge sin egen HttpHandler!! aarrrrhhh....ja undskyld...men det er bare frustrerende at have brugt så meget tid på det, når fejlen så ikke en gang ligger på min side...
Avatar billede nielle Nybegynder
15. december 2007 - 22:53 #51
Jeg forstår ikke helt hvad du gerne vil have af info...mht. server...>

Jeg ville såmæn bare vide om jeg skulle smække noget debug-kode sammen til at gemme i en database eller til en fil på disken eller noget helt tredje.

Men det er jo desværre lige meget nu:

... og nu sagde en anden fanme at det IKKE er muligt, at bruge sin egen HttpHandler!!>

Surt. Men det lyder nu lidt om om at de ikke har helt 100 % styr på deres fakta, så måske hvis du spørger dem igen...

Jeg kan nu ikke lige se hvorfor at de skulle slå det fra ... hvor er sikkerhedsrisikoen henne?

Tja, jeg ikke umiddelbart nogle andre forslag til en løsning :^(
Avatar billede pablopablo Nybegynder
17. december 2007 - 17:34 #52
Haløjsa! Så kom der ENDELIG hul igennem...ja nu hvor det er juletid, hvis jeg tillade mig at kalde dem nogle amatør-nisser...Fik dem til at konfigurere IIS'en og nu spiller det hele ;)

Du skal have mange tak for hjælen!

btw, nu hvor jeg har dig, kender du så noget til noget godt Url rewriting i dot net?
Avatar billede nielle Nybegynder
17. december 2007 - 18:12 #53
Jeg kender ikke noiget af personlig erfaring, men de findes.

En måde at gøre det på er via en custom 404 side.

En anden måde er via et HttpModule. Måske kan du blive lidt indpireret i denne tråd, som selvom den ikke handler direkte om det, smager derefter:

http://www.eksperten.dk/spm/807799
Avatar billede pablopablo Nybegynder
24. december 2007 - 01:17 #54
Det er Jul det er cool, men jeg har stadig et spørgsmål! :)

Alt virker efter hensigten...dvs. så længe man ikke er logget ind på sitet...Jeg har 3 forskellige bruger niveauer i mit site...via asp.net configuration...og når man logger ind og tilgår sider som kun reg. brugere kan tilgå, ja så kaldes HttpHandleren ikke!

Indtil videre har jeg kun tilføjer HttpHandleren i web.config filen som ligger i roden af projektet...idet jeg ønsker det skal virke ens for alle niveauer, har jeg også prøvet at tilføje den samme HttpHandler men forskellige parametre i default web.config filen...(forskellen ligger blot i, hvad variablen path sættes til...)
Jeg har også prøvet at rode med div. web.config filer, som ligger i hver mappe, som er knyttet til hvert enkelt niveau...men uanset hvad jeg prøver på...så spiller det ikke 100%...:(

Når den prøver at loade en side som  kræver rettigheder, så bliver statusbaren blot stående et givet sted i IE....hvis jeg trykker F5...kan det være den rykker sig lidt frem eller tilbage...men meget andet sker der ikke..jo nogle meget få gange blev flash app. fasktisk vist...ja det fatter jeg ikke selv noget af...da det jo enten burde spiller 100% eller også slet ikke...

I default web.config filen står følgende:

<add verb="*" path="*.swf" type="SwfAntiLeech.SwfAntiLeechClass, SwfAntiLeech"/>

Jeg har prøvet at kopiere denne linie og indsætte den flere gange, og blot ændret path til noget andet...fx..

<add verb="*" path="~/MembersFolder/*.swf" type="SwfAntiLeech.SwfAntiLeechClass, SwfAntiLeech"/>

Et eller andet sted burde det jo ikke være nødvendigt...men jeg kan se via Trace.axd og debug, at HttpHandleren ikke bliver kørt, end andre sider end dem som ligger i roden af sitet...trods de indeholder swf filer...

Håber meget i kan hjælpe mig men denne også ;)

Mvh.
Avatar billede pablopablo Nybegynder
30. december 2007 - 02:54 #55
Avatar billede pablopablo Nybegynder
01. maj 2008 - 17:34 #56
Hejsa! Længe siden! :)

Jeg har desværre erfaret at nogle programmer let går forbi nedenstående tjek fra HttpHandleren:

if (CultureInfo.InvariantCulture.CompareInfo.Compare(
                    request.Url.Host,
                    request.UrlReferrer.Host,
                    CompareOptions.IgnoreCase) != 0)

Det er åbenbart pga. at div. programer sætter UrlReferrer til roden af requestet...så i stedet for www.domain.dk/test/file/flash.swf så er det kun www.domain.dk hvilket jo altid er det samme...:( Forstå du hvad jeg mener? Er der noget andet jeg kan gøre? Jeg kan jo ikke tjekker på IP, da klienten selvfølgelig altid vil requeste fra en anden IP end serverens....Sig til hvis du vil have, at jeg opretter et nyt spørgsmål, så du kan få flere points!

På forhånd tak!

Mvh. PabloPablo
Avatar billede nielle Nybegynder
02. maj 2008 - 07:54 #57
1) Det dur nok ikke at forsøge at skrive en cookie til klienten - den lider sikkert under samme fejl som gjorde at den oprindelige model med sessions ikke virkede.

2) Du kan måske alligevel bruge IP - hvis det kaldende IP kun har været "aktiv" en gang, så er det nogen som linker direkte. Hvis de derimod har været involveret tidligere så er det ok nok.

Når det så er sagt, så er der næppe nogen 100 % effektiv opskrift på at forhinder det.
Avatar billede pablopablo Nybegynder
02. maj 2008 - 19:20 #58
Hej igen :)

Jeg har løst problemet, jeg tjekker blot om "request.UrlReferrer" (ikke "request.UrlReferrer.Host") er præcis den samme aspx side som udfører kaldet i min website...og det virker! :)
Avatar billede nielle Nybegynder
03. maj 2008 - 07:09 #59
Cool :^)
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