Voulez-vous que votre fichier SWF reste exclusif sur votre site? Dans cette astuce, nous verrons comment utiliser un "verrou de site" pour empêcher les personnes de télécharger votre fichier SWF et de l'intégrer à un autre site Web..
Voici le fichier en cours d'exécution sur un domaine incorrect:
Nous allons créer un affichage animé à activer lorsque le fichier SWF se trouve sur le mauvais domaine, comme dans l'exemple ci-dessus. En disant cela, si vous voulez juste en savoir plus sur le code de verrouillage du site, passez à l'étape 5.
Avant de commencer à écrire du code et à ajouter des conceptions sur la scène, vous devez d’abord acquérir Tweener. Pour ce projet, j'ai utilisé l'open source, qui peut être utilisé pour des projets ouverts et commerciaux. Le tweener Caurina est disponible sous code.google.com.
Une fois que vous avez téléchargé Tweener, copiez-le et collez-le dans le dossier de votre projet. Rappelez-vous, le dossier doit être nommé caurina
, dans le dossier, il doit y avoir un dossier appelé transitions et à l'intérieur de celui-ci, un chargement de fichiers de classe Flash .as.
Avec la première étape effectuée, nous pouvons continuer à coder et à concevoir le fichier..
La taille du fichier est sans importance. La propriété du locker de domaine est de verrouiller votre fichier SWF, ou composant, au cas où quelqu'un le téléchargerait sans votre autorisation..
Pour cet exemple, j'ai utilisé une taille de scène de 540 x 400, vous pouvez utiliser la taille que vous voulez.
Après avoir sélectionné la taille du fichier, créez 3 nouveaux calques comme dans l'image ci-dessous. Gardez toujours votre couche d'actions vide. Les étapes organisées sont beaucoup plus faciles à travailler et à comprendre.
Après avoir créé les 3 couches, créez 2 nouveaux MovieClips simples. Placez-les où vous voulez, quelle que soit votre taille. 40 pixels de hauteur sur 10 pixels de largeur, par exemple, sans trait. Le positionnement n’est pas important, car nous allons placer ces MovieClips par ActionScript plus tard.
Maintenant, vient l'aspect le plus important de ces MovieClips, le point d'enregistrement. Regardez les images ci-dessous. Lors de la conversion de vos bitmaps en movieclips, n'oubliez pas de procéder comme suit, sinon le fichier ne fonctionnera pas à plein potentiel:
Et bien sûr, les noms d'instance:
Toutes nos félicitations! Vous avez ajouté les cases qui fermeront la page au cas où le domaine est erroné. Ajoutez maintenant une zone de texte dynamique au milieu de la scène ou à l’endroit où vous le souhaitez. Cette zone de texte informera l'utilisateur qui a téléchargé le fichier illégalement que le fichier est protégé par le script… Donnez-lui un nom d'instance de warning_txt
Maintenant, une fois que vous avez créé les MovieClips et la zone de texte, vous êtes prêt à coder. Sur le calque des actions verrouillées, appuyez sur F9 et ajoutez le code suivant:
importer flash.events. *; import flash.display.LoaderInfo; import flash.display.MovieClip; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; importer caurina.transitions.Tweener
flash.events. *;
charge tous les événements dont nous aurons probablement besoin.flash.display.LoaderInfo;
apporte toutes les informations que nous devons charger et qui se chargeront avec le fichier.flash.flash.display.MovieClip;
charge tous les événements que nous rencontrerons lors de l'utilisation de MovieClips.importer caurina.transitions.Tweener;
charge notre moteur d'interpolation et l'animation des barres de blocage du contenu.Le reste des événements chargés est nécessaire pour que Flash ait accès à l'URL de la page dans la barre..
var url: String = stage.loaderInfo.url;
Supposons que le fichier SWF soit chargé sur la page http://www.domainName.com/siteFolder/sitePage.html. La ligne 9 récupère cette URL et l’assigne à la chaîne appelée url
.
Maintenant que Flash sait où obtenir l'URL, il est temps de comparer cela à l'URL de notre site Web et de prendre des mesures si elles ne correspondent pas ou non.
function pageDomainCheckInit (event: Event): void if (url! = "http://www.domainName.com/siteFolder/sitePage.html") warning_txt.text = "Ce fichier est en cours d'exécution sur une mauvaise URL. Accès au contenu Limité!"; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alpha: 0.8, time: 1, transition: "aisanceSansExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, heure: 1, alpha: 0.8, transition: "aisanceSansExpo"); else warning_txt.text = ""; closeBoxTop.visible = false; closeBoxBottom.visible = false; stage.removeEventListener (Event.ENTER_FRAME, pageDomainCheckInit); stage.addEventListener (Event.ENTER_FRAME, pageDomainCheckInit);
Nous avons utilisé un écouteur d'événement pour lancer la vérification de la chaîne d'URL détectée précédemment. En gros, cela indique à Flash que si la chaîne située dans la barre de navigation (ou l’URL sur laquelle la page est hébergée) n’est pas correcte, la page exécutera le script de blocage du contenu et avertira l’utilisateur que le domaine est incorrect. Sinon, si la page est correctement placée, les cases qui ferment la page ne seront pas affichées, pas plus que le texte d'avertissement.
Une fois cette section terminée, nous supprimons l'écouteur d'événements afin que le fichier ne consomme pas de ressources en vérifiant, en revérifiant et revérifiant encore et encore. Une fois que la chaîne est extraite, comparée et que le script est exécuté avec succès, le pageDomainCheckInit
l'événement est supprimé.
if (url! = "http://www.domainName.com/siteFolder/sitePage.html")
Cette section du code, est fondamentalement un "SI PAS", donc si la page n'est pas http://www.domainName.com/siteFolder/sitePage.html
Flash commencera à exécuter des fonctions situées sous le FI, mais sinon, si le fichier SWF est sur la bonne page, Flash supprimera les blocs de la scène et conservera tout en ordre. Vous ne saurez jamais que c'est là.
Voyons maintenant ce qui se passe lorsque le fichier n'est pas sur le bon domaine.
warning_txt.text = "Ce fichier est en cours d'exécution sur le pageDomain incorrect. Accès au contenu restreint!"; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alpha: 0.8, time: 1, transition: "aisanceSansExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, heure: 1, alpha: 0.8, transition: "aisanceSansExpo");
Le code que vous voyez ici positionne les closeBoxes en début et fin de scène (closeBoxTop = 0, closeBoxBotton = stage.stageWidth
) et les rend invisibles (closeBoxTop.visible = false, closeBoxBottom.visible = false
) cela les masque de la scène, les écarte de la vue et n’affecte pas l’aspect du site. Néanmoins, ils sont là.
Si la page ou le composant est installé sur un nom de site / domaine différent de celui sur lequel il ne devait pas initialement être activé, ils deviennent visibles. Ils se développent sur l’écran, le recouvrant complètement et alertant l’utilisateur que le contenu est volé ou pas là où il est supposé être..
Cette mesure informe non seulement l'utilisateur général que le fichier n'est pas là où il est censé se trouver, mais elle empêche également l'affichage de tout contenu..
Que faire si nous voulons uniquement vérifier si le fichier SWF est chargé sur un domaine spécifique?
Donc, au lieu de vérifier si le fichier SWF est à http://www.domainName.com/siteFolder/sitePage.html
, nous vérifions juste si c'est quelque part sur le nomdomaine.com
site Internet. Donc ça pourrait être à https://private.domainName.com/secure/secret.html
et travaille toujours.
Nous pouvons y parvenir en modifiant le code qui obtient l'URL, comme suit:
var url: String = stage.loaderInfo.url; // cette ligne était ici avant! var urlDébut: 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);
Supposons que le fichier SWF soit chargé sur la page http://www.domainName.com/siteFolder/sitePage.html. La ligne 9 récupère cette URL et l’assigne à la chaîne appelée url
. C'est la même ligne que nous avions avant.
La ligne 10 du code récupère la position dans l'URL du : //
La ligne 11 du code récupère le premier /
qui apparaît dans l'URL après la : //
. Ceci est en fait très important car entre ces deux noms, votre nom de domaine actuel peut être trouvé.
La ligne 12 du code, établit simplement la connexion dans Flash de ce qui est entre le: // et le premier / obtenir le nom de domaine Chaîne prête pour la vérification à l'étape suivante. À ce stade, avec notre exemple, pageDomain
a été mis à www.domainName.com
.
Le code restant vérifie la chaîne du nom de domaine, ce qui est avant (signifiant "www" ou "http: // www.") Et ce qui se trouve après votre nom de domaine (signifiant ".").
Tous ces éléments sont ignorés afin que Flash puisse définir le nom de domaine actuel. le nomdomaine.com
. Au lieu de vérifier:
if (url! = "http://www.domainName.com/siteFolder/sitePage.html")
… Nous vérifions:
if (pageDomain! = "domainName.com")
Le principal problème de cette technique est qu’elle ne fonctionne pas pour les domaines comportant trois parties. Par exemple, nomdomaine.co.uk
- ce code obtiendra ".co.uk" comme valeur de pageDomain. Pourtant, c'est ma méthode préférée, comme je l'expliquerai dans la prochaine étape.
Vous pouvez avoir plusieurs fichiers sur votre serveur, sur différents domaines, cette méthode aurait pu être effectuée de telle manière que le fichier serait verrouillé sur une seule et unique URL, comme ci-dessus. Mais si vous deviez exécuter votre fichier en utilisant une liaison profonde, par exemple, ou des sous-domaines, le fichier cesserait de fonctionner, car le lien serait invalide pour le lecteur de domaine..
Le fait que le code soit if (pageDomain! = "domainName.com")
c'est tres important. Cela vous permettra d'ajouter ce code à chaque fichier de votre site, sous-domaine, emplacement du lien profond; tant que votre lien est sur ce domaine, le fichier sera exécuté et le casier de domaine ne déclenchera pas!
Néanmoins, il peut être utile de verrouiller quelque chose de plus spécifique qu'un nom de domaine. Supposons que vous hébergiez votre site Web sur un hôte tel qu'Amazon S3. Ensuite, votre URL sera quelque chose comme http://votrenom.s3.amazonaws.com/folder/page.html. Mais quelqu'un d'autre sur Amazon S3 pourrait avoir l'URL http://someoneelse.s3.amazonaws.com/. Ils pourraient télécharger le fichier SWF sur leur site, et puisque le fichier SWF serait toujours sur amazonaws.com le casier de domaine ne serait pas verrouillé.
Voici un petit conseil que vous pourriez vraiment aimer. Supposons un instant que vous avez le même contenu sur plusieurs noms de domaine et que vous ne souhaitez pas ajouter de code différent pour chacun de vos domaines. Vous pouvez facilement vérifier le fichier de plusieurs domaines à la fois.
Rencontrez l'opérateur AND: &&
En utilisant cette commande dans le premier vérificateur, vous pouvez ajouter autant de domaines que vous le souhaitez. Laisse moi te montrer comment! :)
Vérificateur de domaine unique:
(pageDomain! = "domainName.com")
Contrôleur de domaine multiple:
((pageDomain! = "domainName.com") && (pageDomain! = "mydomain.com") && (pageDomain! = "hisdomain.com"))
vraiment facile, n'est-ce pas?
Eh bien, cela termine. Comme vous le savez tous, la protection complète des fichiers Flash n’est jamais garantie à 100%, mais il ne s’agit là que d’une étape supplémentaire pour rendre votre site plus sûr, plus performant et plus sûr contre le vol de fichiers. N'oubliez pas de chiffrer vos fichiers avant de les ajouter au serveur! Merci d'avoir lu ce tutoriel, j'espère que cela vous a été utile. Si vous avez besoin d'aide supplémentaire, n'hésitez pas à laisser vos questions dans la section commentaires..