Comment protéger son site contre les jQuery externes ?

WRInaute accro
Bonjour

Ces temps-ci, je me suis prémuni contre le copiage de mon site par un site que je ne nommerai pas. ;)

Cependant, j'aurais besoin de savoir s'il y a un moyen technique ( php et/ou Javasript et/ou .htaccess ) de protéger son site contre les aspirations/traitements dynamiques de données par des scripts jQuery ( ou autres Ajax ) sur d'autres sites.

J'ai vu sur un site, la condition suivante de détection au niveau du .htaccess :

Code:
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]

Est-ce que cette condition, suffirait pour détecter les aspirations dynamiques d'autres sites ?

Merci beaucoup beaucoup pour vos réponses.

Amicalement.

Jean François Ortolo
 
WRInaute accro
spout a dit:
Le RewriteCond que tu montres c'est quand le développeur n'a pas bien sécurisé son code qu'il faut utiliser ça (/search.php?q=<script>alert('n00b power')</script>).

http://fr.openclassrooms.com/informatique/cours/ajax-et-l-echange-de-d ... -control-1

Maintenant ils commencent à scraper avec PhantomJS/CasperJS et autres headless browsers, tu ne pourras pas empêcher ça.


Bonjour spout ;)

Donc, n'importe quel site peut utiliser et arranger techniquement mes données, sans aucun moyen technique pour l'en empêcher ?

A supposer que ce soit vrai, quel effet sur mon référencement Google, de l'affichage de mes données de Courses par de l'Ajax bien ficelé ?

Google lit-il enfin du Javascript de manière synchrone ?

Quel effet celà aurait pour dissuader les copiages ?

J'imagine de coder mon site en Ajax, avec des paramètres aux scripts php d'affichage ( lancés en Ajax ), paramètres codés et cryptés et variables, nécessitant théoriquement un navigateur client.

Actuellement, je ne fais celà que dans l'iframe affichant mes pronostics calculés.

Je pourrais à la rigueur, ne pas mettre le paramètre codé dans l'url lançant ce script, en le mettant dans une table MySQL avec un timestamp... ;)

...Mais à ce moment-là, Google serait dans l'impossibilité totale d'avoir le contenu de mon site... ;(

Actuellement, ( à part ces iframes de mes Pronostics Calculés ), mes données sont dans le code html.

Quelle serait la bonne technique pour rendre ces données inaccessibles à d'autres clients que : les navigateurs réels, et les moteurs de recherche ?

Merci beaucoup de te réponse.

Très respectueusement.

Jean François Ortolo
 
WRInaute accro
Rebonjour spout ;)

J'imagine : Mettre mon site en mode Ajax ( pour mes pages de courses ), mais seulement pour des adresses ip clientes dont le reverse ne serait pas ceux de moteurs de recherche.

Quant à ces scripts Ajax : lancement simple du script php chargé de l'affichage, nécessitant pour fonctionner un paramètre alphanumérique crypté et très variable ( dépendant de la session et de l'adresse ip cliente, et à sens unidirectionnel non prévisible ), paramètres simplement inséré en amont dans une table MySQL avec timestamp.

Celà serait-il efficace pour prévenir les copiages ?

Resterait le problème des urls reverse des moteurs de recherche, ce reverse serait parfois vide...

Merci beaucoup de ta réponse.

Amicalement.

Jean François Ortolo
 
WRInaute accro
Rebonjour spout ;)

Je sais bien qu'un seul contenu en aval, dépend de manière injective du contenu en amont.

Celà veut dire, que : Si le contenu en amont est connu entièrement, le contenu en aval l'est aussi.

Il y a deux pistes :

1- Faire en sorte que l'un des éléments ( ou plusieurs) en amont, reste inconnu du client, et non reproductible,

2- Faire en sorte que le contenu final en aval, dépende de plusieurs éléments en amont, dont l'ordre de déclenchement reste inconnu du client en amont, et qu'un contenu correct en aval, nécessite un et un seul ordre de déclenchements en amont.

Pour le 1-, je n'y crois pas beaucoup, car même les identificateurs de session peuvent être connus de n'importe quel script php copiant mon site, quant au reste, celà pourrait rester inconnu, mais serait nécessairement reproductible itou, car il n'y a aucun moyen technique, pour distinguer un accès par navigateur classique, d'un autre type d'accès, forgé ad hoc.

Pour le 2- , j'imagine dans le premier script ( en amont ) lancé, mettre dans une table MySQL, l'adresse ip cliente, plus quelques autres babioles, dont un code définissant l'ordre dans lequel devraient être lancés n scripts php fils, c'est-à-dire une sorte de mécanisme de sémaphore à la mode Unix, destiné à permette l'accès à la tâche en question ( le contenu en aval ).

Je vais revoir mes cours d'Unix sur les sémaphores, datant de 1993 et 1997... ;(

Merci beaucoup de vos réponses.

Amicalement.

Jean François Ortolo
 
WRInaute accro
houlà toudou :mrgreen:

Les browsers n'acceptent plus le cross domain AJAX. Pr ça il faut indiquer ce qui est expliqué sur OpenClassRoom.
(Pour contourner ça, y'en a qui font tout simplement un read du fichier en PHP pr le renvoyer sur leur site en AJAX (un tunnel/proxy))
Si tu charges tes stats en AJAX, côté serveur tu peux savoir si cela bien été appelé en AJAX: http://snipplr.com/view/16624/
Et ainsi tu peux empêcher une partie scrap via des tools qui ne lisent pas le JS (fopen PHP ou autre).

Mais comme je te disais, avec phantomjs, on arriverait quand même à scraper ton site.
 
WRInaute accro
spout a dit:
houlà toudou :mrgreen:

Les browsers n'acceptent plus le cross domain AJAX. Pr ça il faut indiquer ce qui est expliqué sur OpenClassRoom.
(Pour contourner ça, y'en a qui font tout simplement un read du fichier en PHP pr le renvoyer sur leur site en AJAX (un tunnel/proxy))
Si tu charges tes stats en AJAX, côté serveur tu peux savoir si cela bien été appelé en AJAX: http://snipplr.com/view/16624/
Et ainsi tu peux empêcher une partie scrap via des tools qui ne lisent pas le JS (fopen PHP ou autre).

Mais comme je te disais, avec phantomjs, on arriverait quand même à scraper ton site.


Bonjour spout ;)

C'est sûr que côté implémentation des sites copieurs, ils n'utilisent pas Ajax directement, mais font une une analyse du code de la page de mon site, donnant le contenu en amont, et en déduisent comment accéder au contenu en aval.

C'est sûr, que même si je fais en sorte que le contenu en aval, nécessite, pour être affiché, un code aléatoire ( dans une table MySQL par exemple ), comme les situations du client ( navigateur ou pas ) seront les mêmes, il pourra y avoir copiage.

Mais si le contenu en aval dépend du déclenchement d'un sémaphore, consistant en un ordre ( lui même aléatoire et connu du script/contenu en aval ), ordre de séquencement d'accès à plusieurs ressources intermédiaires, il suffirait que cet ordre de déclenchement ne soit pas reproductible, ni déductible du contenu html du script en amont, pour que le problème soit résolu.

Le problème, est surtout de faire en sorte que cette contrainte d'ordre de séquencement, ne soit pas reproductible, ni déductible du contenu en amont.

C'est le principe du sémaphore, ou accès partagé à une ressource, à partir de plusieurs processus, dont l'ordre d'accès au sémaphore détermine l'accès à la ressource.

Cependant, je reconnais qu'il est probablement difficile voire impossible, de cacher cet ordre de séquencement, tout en l'implémentant ( en PHP ), dans le script en amont.

Je vais me pencher sur la question.

Bien amicalement.

Jean François Ortolo
 
WRInaute accro
spout a dit:
houlà toudou :mrgreen:

Les browsers n'acceptent plus le cross domain AJAX. Pr ça il faut indiquer ce qui est expliqué sur OpenClassRoom.
(Pour contourner ça, y'en a qui font tout simplement un read du fichier en PHP pr le renvoyer sur leur site en AJAX (un tunnel/proxy))
Si tu charges tes stats en AJAX, côté serveur tu peux savoir si cela bien été appelé en AJAX: http://snipplr.com/view/16624/
Et ainsi tu peux empêcher une partie scrap via des tools qui ne lisent pas le JS (fopen PHP ou autre).

Mais comme je te disais, avec phantomjs, on arriverait quand même à scraper ton site.


Rebonjour spout

Je te demande pardon.

J'ai lu ton message trop vite, je croyais que tu voulais dire que mon procédé ne fonctionnait pas.

Si je comprend bien non seulement je peux protéger les pages de Courses de mon site avec de l'Ajax, mais je n'ai même pas besoin de code aléatoire.

Super chouette de chouette !

Mais, comment traiter les moteurs recherche, si le reverse n'est pas fiable ?

Merci beaucoup de ta réponse.

Respectueusement.

Jean François Ortolo
 
WRInaute accro
Rebonjour spout ;)

Voilà j'ai trouvé une fonction libre de droit sur le net, qui donne des infos sur les navigateurs et autres bots

C'est une fonction qui est l'équivalent de la fonctionnalité "browscap" des serveurs web.

Elle rend un objet PHP, et voici ce que cette fonction me rend pour mon navigateur :

stdClass Object ( [browser_name_regex] => ^mozilla/5\.0 \(.*linux x86_64.*\) applewebkit/.* \(khtml, like gecko\).*chrome/30\..*safari/.*$ [browser_name_pattern] => Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/30.*Safari/* [parent] => Chrome 30.0 [platform] => Linux [win32] => false [comment] => Chrome 30.0 [browser] => Chrome [version] => 30.0 [majorver] => 30 [minorver] => 0 [frames] => true [iframes] => true [tables] => true [cookies] => true [javascript] => true [javaapplets] => true [cssversion] => 3 [renderingengine_name] => WebKit [renderingengine_description] => For Google Chrome, iOS (including both mobile Safari, WebViews within third-party apps, and web clips), Safari, Arora, Midori, OmniWeb, Shiira, iCab since version 4, Web, SRWare Iron, Rekonq, and in Maxthon 3. [platform_version] => unknown [platform_description] => unknown [alpha] => false [beta] => false [win16] => false [win64] => false [backgroundsounds] => false [vbscript] => false [activexcontrols] => false [ismobiledevice] => false [issyndicationreader] => false [crawler] => false [aolversion] => 0 [device_name] => unknown [device_maker] => unknown [renderingengine_version] => unknown )

Théoriquement je n'ai qu'à vérifier que [crawler] == true pour détecter un moteur de recherche ou un bot.

Mais... ;( C'est une fonction ( toujours pareil... ) qui utilise l'User-Agent.

Je pense pour ma part, que le reverse est plus sûr, et celà n'est pas trop gênant, d'avoir des détections ratées de moteurs de recherche réels, ceux qui n'ont pas de reverse, seront les seuls à ne pas avoir contenu de mon site.

Je vais revoir ma liste de token détectant les reverse de moteurs de recherche.

Merci beaucoup beaucoup pour tes informations.

Bien amicalement.

Jean François Ortolo
 
WRInaute accro
Rebonjour

Finalement, le développement est en marche, dans le fichier de config je détecte les bots par leur reverse, puis j'inclus tel ou tel script suivant le contenu de $_SERVER["REQUEST_URI"].

Je n'ai plus qu'à recopier les anciens vers les nouveaux scripts, qui seront lancés en Ajax, par les scripts inclus.

Les scripts lancés en Ajax, rempliront toute l'interface entre <body> et </body> avec innerHTML.

Facile à priori.

Merci beaucoup à spout pour son aide.

Respectueusement.

Jean François Ortolo
 
WRInaute accro
Bonsoir

Tous mes pronostics sont maintenant protégés.

Il ne reste plus que les tableaux de stats, que je ferai prochainement.

Là, il y a de la manip MySQL à faire, pour transmettre les paramètres.

Merci de me dire si mes Pronostics calculés sont bien protégés contre la copie, et aussi si les différences d'affichage entre les moteurs et les visiteurs classiques, ne s'apparentent pas à du cloaking. ;)

Bien amicalement.

Jean François Ortolo
 
WRInaute accro
Bonjour

Voilà, tout mon contenu des pages de courses est en Ajax, à part les rapports pour les courses passées.

Merci beaucoup de me dire si vous arrivez quand même à télécharger mes données ?

Amicalement.

Jean François Ortolo
 
Discussions similaires
Haut