Snabbtips Lås din SWF till ett visst domännamn

Vill du hålla din SWF exklusiv på din webbplats? I denna Snabba Tips ser vi på hur du använder ett "webbplatslås" för att stoppa att människor hämtar din SWF och inbäddar den på en annan webbplats.


Slutresultatförhandsvisning

Här körs filen på en felaktig domän:

Vi bygger en animerad bildskärm som ska aktiveras när SWF är på fel domän, som i exemplet ovan. Säg att om du bara vill veta om webbplatsens låskod går du vidare till steg 5.


Steg 1: Tweener

Innan du börjar skriva kod och lägga till mönster till scenen måste du först få Tweener. För detta projekt använde jag öppen källkod, som kan användas för öppna och kommersiella projekt. Caurina tweener finns tillgänglig på code.google.com.

När du har laddat ner Tweener, kopiera och klistra in den i din projektmapp. Kom ihåg att mappen måste vara namngiven caurina, Inne i mappen måste det finnas en mapp som heter övergångar, och inuti den en last av Flash .as klassfiler.

Med det första steget gjort kan vi fortsätta med kodning och utformning av filen.


Steg 2: Filstorlek och lager

Filstorleken är irrelevant. Domänskåpets egendom är att låsa upp din SWF eller komponent, om någon har laddat ner den från dig utan din tillåtelse.

För det här exemplet har jag använt en scenstorlek på 540 x 400, du kan använda vilken storlek du vill ha.

När du har valt filstorlek, skapa 3 nya lager som i bilden nedan. Håll alltid åtgärdslaget tomt. Organiserade stadier är mycket lättare att arbeta med och förstå.


Steg 3: Censorsystemet

När du har skapat de tre lagren, skapa 2 nya enkla filmklipp. Placera dem vart du vill, oavsett storlek du vill ha. 40 pixel höjd med 10 pixel bredd låt oss säga, utan stroke. Placering är inte viktigt, eftersom vi kommer att placera dessa filmklipp genom actionscript senare.

Nu kommer den viktigaste aspekten av dessa filmklipp, registreringspunkten. Titta på bilderna nedan, när du konverterar dina bitmappar till filmklipp, kom ihåg att göra följande annars kommer filen inte att köras med full potential:

Och naturligtvis är förekomstnamnen:

grattis! Du har lagt till rutorna som stänger sidan ned, om domänen är fel. Lägg nu till en dynamisk textruta i mitten av scenen eller var du vill att den ska vara. Den här textrutan informerar användaren som laddat ner filen olagligt så att filen skyddas av manuset. Ge det ett förekomstnamn på warning_txt


Steg 4: Laddar nödvändiga klasser

Nu, när du har skapat filmklipp och textrutan, är du redo att koda. På fältet låst handling trycker du på F9 och lägger till följande kod:

 importera flash.events. *; importera flash.display.LoaderInfo; importera flash.display.MovieClip; importera flash.net.navigateToURL; importera flash.net.URLRequest; importera flash.net.URLVariabler; importera caurina.transitions.Tweener
  • flash.events *.; laddar alla händelser som vi förmodligen behöver.
  • flash.display.LoaderInfo; ger upp all information vi behöver ladda och som laddas med filen.
  • flash.flash.display.MovieClip; laddar alla händelser vi kommer att stöta på när du använder movieclips.
  • importera caurina.transitions.Tweener; laddar vår mellanmotor och animeringen av innehållsblockeringsfälten.

Resten av de inlästa händelserna behövs så att Flash får åtkomst till sidadressen i fältet.


Steg 5: Kontrollera efter en viss sida

 var url: String = stage.loaderInfo.url;

Låt oss anta att SWF är laddad på sidan http://www.domainName.com/siteFolder/sitePage.html. Rad 9 hämtar den här URL-adressen och tilldelar den till strängen som heter url.


Steg 6: Orsak och effekt

Nu när Flash vet varifrån URL ska hämtas är det dags att jämföra det med vår webbadress, och vidta åtgärder om de matchar eller inte

 FunktionssidaDomainCheckInit (händelse: Händelse): void if (url! = "http://www.domännamn.com/siteFolder/sitePage.html") warning_txt.text = "Den här filen körs på fel webbadress. begränsad! "; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alfa: 0.8, tid: 1, övergång: "easeInOutExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, tid: 1, alfa: 0,8, övergång: "easeInOutExpo");  else warning_txt.text = ""; closeBoxTop.visible = false; closeBoxBottom.visible = false;  stage.removeEventListener (Event.ENTER_FRAME, pageDomainCheckInit);  stage.addEventListener (Event.ENTER_FRAME, pageDomainCheckInit);

Vi har använt en händelselyssnare för att starta kontrollen av den tidigare upptäckta URL-strängen. Vad det här i grunden gör, berättar om att om strängen som finns i navigeringsfältet (eller webbadressen där sidan är värd) inte är den rätta sidan, kommer sidan att utföra skriptet för att blockera innehåll och varna användaren som Domänen är felaktig. Annars, om sidan är korrekt placerad, visas inte rutorna som närmar sig sidan, inte heller varningstexten.

När det här avsnittet är klart, tar vi bort händelseläsenaren så att filen inte äter upp resurser genom att kontrollera och kontrollera om och ompröva om och om igen. När strängen framgångsrikt dras, jämförs och manuset körs med framgång, pageDomainCheckInit händelsen avlägsnas.

 om (url! = "http://www.domännamn.com/siteFolder/sitePage.html") 

Det här avsnittet av koden är i grunden en "IF NOT", så om sidan inte är http://www.domainName.com/siteFolder/sitePage.html Flash kommer att börja utföra funktioner under IF, men annars - om SWF är på rätt sida - kommer Flash att ta bort blocken från scenen och hålla allt snyggt och städat. Du vet aldrig att det är där.

Nu, låt oss se vad som händer, när filen inte finns på rätt domän.

 warning_txt.text = "Den här filen körs på fel sidaDomain. Content Access Restricted!"; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alfa: 0.8, tid: 1, övergång: "easeInOutExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, tid: 1, alfa: 0,8, övergång: "easeInOutExpo");

Koden som du ser här positionerar closeboxarna till scenen start och slutändan (closeBoxTop = 0, closeBoxBotton = stage.stageWidth), och gör dem osynliga (closeBoxTop.visible = false, closeBoxBottom.visible = false) detta döljer dem från scenen, håller dem borta från vyn och påverkar inte webbplatsens utseende. Ändå är de där.

Om sidan eller komponenten är installerad på ett annat webbplats / domännamn som det inte ursprungligen var tänkt att vara på, blir de synliga. De expanderar över skärmen, täcker det helt och varnar användaren om att innehållet är stulet eller inte där det ska vara.

Denna åtgärd informerar inte den vanliga användaren om att filen inte är den där den ska vara, men det blockerar också innehållet från att visas.


Steg 7: Kontrollerar en specifik domän

Vad händer om vi bara vill kontrollera om SWF är laddad på en specifik domän?

Så istället för att kontrollera om SWF är på http://www.domainName.com/siteFolder/sitePage.html, Vi kontrollerar bara om det är någonstans på domainName.com hemsida. Så det kunde vara på https://private.domainName.com/secure/secret.html och jobbar fortfarande.

Vi kan uppnå detta genom att redigera koden som får webbadressen, så här:

 var url: String = stage.loaderInfo.url; // den här raden var här före! var urlBeginning: int = url.indexOf (": //") + 3; var urlTermination: int = url.indexOf ("/", urlBeginning); var pageDomain: String = url.substring (urlBeginning, urlTermination); var lastDot: int = pageDomain.lastIndexOf (".") - 1; var CharacterAfterDomain: int = pageDomain.lastIndexOf (".", lastDot) + 1; pageDomain = pageDomain.substring (CharacterAfterDomain, pageDomain.length);

Kod förklaras

Låt oss anta att SWF är laddad på sidan http://www.domainName.com/siteFolder/sitePage.html. Linje 9 hämtar denna URL och tilldelar den till den kallade strängen url. Det är samma linje som vi hade tidigare.

Linje 10 av kod hämtar positionen inom URL: en av : //

Kod linje 11 hämtar den första / som visas i webbadressen efter : //. Det här är faktiskt väldigt viktigt eftersom det finns ditt faktiska domännamn mellan dessa.

Linje 12 av kod, gör bara anslutningen inuti Flash av vad som ligger mellan: // och den första / få domännamnet String redo för incheckning i nästa steg. Vid denna punkt, med vårt exempel, PAGEDOMAIN har ställts in till www.domainName.com.

Den återstående koden kontrollerar domännamnssträngen, vad är det innan den (vilket betyder "www" eller "http: // www.") Och vad som är efter ditt domännamn (vilket betyder ".").

Alla dessa ignoreras, så att Flash kan definiera det faktiska domännamnet. De domainName.com. I stället för att kontrollera:

 om (url! = "http://www.domännamn.com/siteFolder/sitePage.html") 

... vi kontrollerar:

 om (pageDomain! = "domainName.com") 

Huvudproblemet med denna teknik är att det inte fungerar för domäner som har tre delar. Till exempel, domainName.co.uk - den här koden får ".co.uk" som värdet av pageDomain. Ändå är det min föredragna metod, som jag kommer att förklara i nästa steg.


Steg 8: Utility?

Du kan ha flera filer på din server på olika domäner, den här metoden kunde ha gjorts på ett sådant sätt att filen skulle vara låst på en enda och unik URL, som ovan. Men om du skulle köra din fil med hjälp av djupkoppling till exempel eller underdomäner, skulle filen sluta fungera på grund av att länken skulle vara ogiltig för domänläsaren.

Det faktum att koden är om (pageDomain! = "domainName.com") är väldigt viktigt. Det kommer att tillåta dig att lägga till den här koden till varje fil på din webbplats, underdomän, djup länk plats; så länge som din länk finns på den domänen kommer filen att springas och domänlåsen kommer inte att utlösas!

Det kan dock vara användbart att låsa till något mer specifikt än ett domännamn. Antag att du värd din webbplats på en värd som Amazon S3. Då kommer din webbadress att likna http://yoursitename.s3.amazonaws.com/folder/page.html. Men någon annan på Amazon S3 kan ha webbadressen http://someoneelse.s3.amazonaws.com/. De skulle kunna ladda upp SWF till deras webbplats, och eftersom SWF fortfarande skulle vara på amazonaws.com Domänhytten skulle inte låsa.

Tips

Här är ett litet tips som du verkligen kan älska. Låt oss anta ett ögonblick att du har samma innehåll på flera domännamn och du inte vill lägga till en annan kod för vart och ett av domänerna. Du kan göra filen enklare för flera domäner samtidigt.

Möt AND-operatören: && Genom att använda det här kommandot i den första kontrollen kan du lägga till så många domäner som du önskar. Låt mig visa dig hur! :)

Enkel domänkontrollant:

(PAGEDOMAIN! = "DomainName.com")

Multipel domänkontrollant:

((sidanDomain! = "domainName.com") && (sidanDomain! = "mydomain.com") && (pageDomain! = "hisdomain.com")) väldigt lätt, är det inte?


Slutsats

Tja, det här försvinner det. Som du vet vet garanteras inte fullständigt skydd av flashfiler 100%, men det här är bara ett steg för att göra din webbplats säkrare, bättre och säkrare mot filstöld. Glöm inte att kryptera dina filer innan du lägger till dem på servern! Tack för att du läste den här handledningen, hoppas jag att det var användbart för dig, om du behöver mer hjälp, tveka inte att lämna dina frågor i kommentarsektionen.