Rask tips Lås din SWF til et bestemt domenenavn

Vil du beholde SWF eksklusivt til nettstedet ditt? I denne Quick Tip, ser vi på hvordan du bruker en "nettstedslås" for å stoppe folk som laster ned SWF og legger den inn på en annen nettside.


Endelig resultatforhåndsvisning

Her kjører filen på et feil domenenavn:

Vi bygger et animert display som skal aktiveres når SWF er på feil domenet, som i eksempelet ovenfor. Å si at hvis du bare vil lære om nettstedslåsekoden, hopper du over til trinn 5.


Trinn 1: Tweener

Før du begynner å skrive kode og legge til design på scenen, må du først få Tweener. For dette prosjektet brukte jeg åpen kildekode, som kan brukes til åpne og kommersielle prosjekter. Caurina tweener er tilgjengelig en code.google.com.

Etter at du har lastet ned Tweener, bare kopier og lim det inn i prosjektmappen din. Husk at mappen må være navngitt caurina, inne i mappen må det være en mappe som heter overganger, og inne i det en last av Flash .as klassefiler.

Med det første trinnet, kan vi fortsette med koding og utforming av filen.


Trinn 2: Filstørrelse og lag

Filstørrelsen er irrelevant. Domeneverns eiendom er å låse ned SWF eller komponent, hvis noen har lastet ned den fra deg uten din tillatelse.

For dette eksempelet har jeg brukt en scenestørrelse på 540 x 400, du kan bruke hvilken som helst størrelse du vil ha.

Etter at du har valgt filstørrelsen, opprett 3 nye lag som i bildet nedenfor. Hold alltid handlingslagret ditt tomt. Organiserte stadier er mye lettere å jobbe med og forstå.


Trinn 3: Censorsystemet

Når du har opprettet de 3 lagene, lager du 2 nye enkle filmklipp. Plasser dem hvor du vil, uansett størrelse du vil ha. 40 pixel høyde med 10 pixel bredde la oss si uten strekk. Plassering er ikke viktig, fordi vi vil plassere disse filmklippene ved actionscript senere.

Nå kommer det viktigste aspektet av disse filmklippene, registreringspunktet. Se på bildene nedenfor, når du konverterer bitmapsene til filmklipp, husk å gjøre følgende, filen vil ikke løpe på det fulle potensialet:

Og selvfølgelig forekomstnavnene:

Gratulerer! Du har lagt til boksene som vil stenge siden ned, dersom domenet er feil. Nå legger du til en dynamisk tekstboks til midten av scenen eller hvor du vil at den skal være. Denne tekstboksen informerer brukeren som lastet ned filen ulovlig at filen er beskyttet av skriptet ... Gi det et forekomstnavn på warning_txt


Trinn 4: Laster Nødvendige Klasser

Nå, når du har opprettet filmklippene og tekstboksen, er du klar til å kode. På det låste handlingslaget trykker du på F9, og legger til følgende kode:

 importer flash.events. *; importer flash.display.LoaderInfo; importer flash.display.MovieClip; importer flash.net.navigateToURL; importere flash.net.URLRequest; importer flash.net.URLVariabler; importere caurina.transitions.Tweener
  • flash.events. *; laster alle hendelsene vi sannsynligvis trenger.
  • flash.display.LoaderInfo; bringer opp all informasjon vi trenger for å laste og som vil laste med filen.
  • flash.flash.display.MovieClip; Laster alle hendelsene vi kommer over når du bruker movieclips.
  • importere caurina.transitions.Tweener; laster vår tween-motor og animasjonen av innholdsblokkeringsstengene.

Resten av hendelsene lastet er nødvendig, slik at Flash får tilgang til sidens nettadresse i linjen.


Trinn 5: Kontrollerer en bestemt side

 var url: String = stage.loaderInfo.url;

La oss anta at SWF er lastet på siden http://www.domainName.com/siteFolder/sitePage.html. Linje 9 henter denne nettadressen og tilordner den til strengen som kalles url.


Trinn 6: Årsak og effekt

Nå som Flash vet hvor du skal få URL-adressen, er det på tide å sammenligne det med nettadressen til nettsiden vår, og ta tiltak hvis de samsvarer eller ikke gjør det

 funksjonssideDomainCheckInit (event: Event): void if (url! = "http://www.domainName.com/siteFolder/sitePage.html") warning_txt.text = "Denne filen kjører på feil URL. begrenset! "; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alfa: 0.8, tid: 1, overgang: "easeInOutExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, tid: 1, alfa: 0,8, overgang: "easeInOutExpo");  annet warning_txt.text = ""; closeBoxTop.visible = false; closeBoxBottom.visible = false;  stage.removeEventListener (Event.ENTER_FRAME, pageDomainCheckInit);  stage.addEventListener (Event.ENTER_FRAME, pageDomainCheckInit);

Vi har brukt en hendelseslytter til å starte sjekken av den tidligere oppdagede nettadressestrengen. Hva dette i utgangspunktet gjør, er fortell flash at hvis strengen som er plassert i navigasjonslinjen (eller nettadressen der siden er vert på) ikke er den riktige, vil siden utføre skriptet for å blokkere innhold og advare brukeren som domenet er feil. Ellers, hvis siden er riktig plassert, vil boksene som lukker siden ikke bli vist, heller ikke advarselsteksten.

Etter at denne delen er fullført, fjerner vi hendelseslytteren, slik at filen ikke spiser ressurser ved å sjekke og kontrollere og rechecking igjen og igjen. Når strengen er vellykket trukket, sammenlignet, og skriptet er vellykket utført, vil pageDomainCheckInit hendelsen er fjernet.

 hvis (url! = "http://www.domainnavn.com/siteFolder/sitePage.html") 

Denne delen av koden er i utgangspunktet en "HVIS IKKE", så hvis siden ikke er http://www.domainName.com/siteFolder/sitePage.html Flash vil begynne å utføre funksjoner under IF, men ellers - hvis SWF er på riktig side - vil Flash fjerne blokkene fra scenen og holde alt pent og ryddig. Du vet aldri at det er der.

Nå, la oss se hva som skjer, når filen ikke er på det riktige domenet.

 warning_txt.text = "Denne filen kjører på feil sideDomain. Innholds tilgang Begrenset!"; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alfa: 0.8, tid: 1, overgang: "easeInOutExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, tid: 1, alfa: 0,8, overgang: "easeInOutExpo");

Koden du ser her, plasserer nærboksene til scenestart og sceneend (closeBoxTop = 0, closeBoxBotton = stage.stageWidth), og gjør dem usynlige (closeBoxTop.visible = false, closeBoxBottom.visible = false) dette skjuler dem fra scenen, holder dem vekk fra visning, og påvirker ikke nettstedets utseende. Likevel er de der.

Hvis siden eller komponenten er installert på et annet nettsted / domenenavn som den ikke opprinnelig var ment for å være på, blir de synlige. De strekker seg over skjermen, dekker det helt og varsler brukeren om at innholdet blir stjålet eller ikke der det skal være.

Dette tiltaket informerer ikke bare den generelle brukeren om at filen ikke er der den skal være, men det blokkerer heller ikke noe innhold fra å bli vist.


Trinn 7: Kontrollerer et bestemt domene

Hva om vi bare vil sjekke om SWF er lastet på et bestemt domene?

Så i stedet for å sjekke om SWF er på http://www.domainName.com/siteFolder/sitePage.html, Vi sjekker bare om det er et sted på domainName.com nettside. Så det kunne være på https://private.domainName.com/secure/secret.html og jobber fortsatt.

Vi kan oppnå dette ved å redigere koden som får nettadressen, slik som:

 var url: String = stage.loaderInfo.url; // denne linjen var her før! var urlBeginning: int = url.indexOf (": //") + 3; var urlTerminasjon: int = url.indexOf ("/", urlBeginning); var sideDomain: String = url.substring (urlBeginning, urlTermination); var lastDot: int = pageDomain.lastIndexOf (".") - 1; var CharacterAfterDomain: int = pageDomain.lastIndexOf (".", lastDot) + 1; pageDomain = pageDomain.substring (CharacterAfterDomain, pageDomain.length);

Kode forklart

La oss anta at SWF er lastet på siden http://www.domainName.com/siteFolder/sitePage.html. Linje 9 henter denne nettadressen og tilordner den til kalt String url. Det er den samme linjen vi hadde før.

Linje 10 av kode henter posisjonen i URL-adressen til : //

Linje 11 av koden henter den første / som vises i nettadressen etter : //. Dette er faktisk veldig viktig fordi mellom disse er ditt faktiske domenenavn funnet.

Linje 12 av kode, gjør bare tilkoblingen inne i Flash av hva som er mellom: // og den første / få domenenavnet String klar til å sjekke inn i neste trinn. På dette punktet, med vårt eksempel, PAGEDOMAIN har blitt satt til www.domainName.com.

Den resterende koden sjekker for domenenavnstrengen, hva er det før (som betyr "www" eller "http: // www.") Og hva er etter domenenavnet ditt (som betyr ".").

Alle disse ignoreres, slik at Flash kan definere det faktiske domenenavnet. De domainName.com. I stedet for å sjekke:

 hvis (url! = "http://www.domainnavn.com/siteFolder/sitePage.html") 

... vi sjekker:

 hvis (pageDomain! = "domainName.com") 

Hovedproblemet med denne teknikken er at det ikke fungerer for domener som har tre deler. For eksempel, domainName.co.uk - denne koden får ".co.uk" som verdien av pageDomain. Likevel er det min foretrukne metode, som jeg vil forklare i neste trinn.


Trinn 8: Utility?

Du kan ha flere filer på serveren din på forskjellige domener, denne metoden kunne ha blitt gjort på en slik måte at filen ville bli låst på en enkelt og unik nettadresse, som ovenfor. Men hvis du skulle kjøre filen ved hjelp av dypkobling for eksempel eller underdomener, ville filen slutte å fungere, fordi koblingen ville være ugyldig for domeneleseren.

Det faktum at koden er hvis (pageDomain! = "domainName.com") er veldig viktig. Det vil tillate deg å legge til denne koden til hver fil på nettstedet ditt, underdomene, dyp lenke sted; så lenge linken din er på det domenet, vil filen løpe, og domenekassen vil ikke utløse!

Likevel kan det være nyttig å låse til noe mer spesifikt enn et domenenavn. Anta at du er vert for ditt nettsted på en vert som Amazon S3. Da vil nettadressen din være noe som http://yoursitename.s3.amazonaws.com/folder/page.html. Men noen andre på Amazon S3 kunne ha nettadressen http://someoneelse.s3.amazonaws.com/. De kunne laste opp SWF til deres nettsted, og siden SWF ville fortsatt være på amazonaws.com domeneskuffen ville ikke låse seg.

Tips

Her er et lite tips du kanskje virkelig elsker. La oss anta et øyeblikk at du har samme innhold på flere domenenavn, og du vil ikke legge til en annen kode for hver av domenene dine. Du kan gjøre filen sjekk for flere domener samtidig, veldig enkelt.

Møt AND-operatøren: && Ved å bruke denne kommandoen inne i den første sjekken kan du legge til så mange domener som du ønsker. La meg vise deg hvordan! :)

Enkelt domene kontroller:

(PAGEDOMAIN! = "DomainName.com")

Flere domene kontroller:

((sideDomain! = "domainName.com") && (sideDomain! = "mydomain.com") && (sideDomain! = "hisdomain.com")) veldig enkelt, er det ikke?


Konklusjon

Vel, dette bryter det opp. Som du vet, er full beskyttelse av flashfiler aldri garantert 100%, men dette er bare et nytt trinn, for å gjøre nettstedet ditt tryggere, bedre og sikrere mot filstyveri. Ikke glem å kryptere filene dine før du legger dem til serveren! Takk for at du har lest denne opplæringen, håper jeg det var nyttig for deg, hvis du trenger mer hjelp, ikke nøl med å legge igjen spørsmålene dine i kommentarseksjonen.