AJAX renvoyant un javascript à des résultats en perte de parsé contenu de la page
-
25-09-2019 - |
Question
Je travaille ai récemment sur un script pour obscurcir le code côté client pour la protection de la propriété intellectuelle sans interférer avec l'apparition de l'interactivité de la page résultante. Le processus est le suivant:
- HTTP requête arrive, réoriente .htaccess (. *) À parse_request.php
- parse_request.php crée un "phpURLParser" classe dont les variables de classe sont essentiellement des copies des variables $ _SERVER
- phpURLParser regarde le chemin demandé, et parfois l'hôte, referer, ou d'autres informations côté serveur pour déterminer comment réagir. Il y a plusieurs réponses possibles
a. L'objet demandé était un fichier .js ou Css. Passez le fichier au compresseur YUI et envoyer la sortie
b. L'objet est une image ou d'une application. Passez le fichier sans changement
c. L'objet demandé contient du HTML. Remplacer tous les caractères ASCII avec son équivalent hexadécimal à 2 chiffres et envoyer le javascript suivant:
<script type="text/javascript">
var x="~lots of hex~";
var y="";
for(i=0; i<x.length; i+=2){
y += unescape('%'+x.substr(i,2));
}
document.write(y);
</script>
Ainsi, le site est remplacé par un grand nombre d'hex et un petit javascript pour retourner l'hexagone à sa forme originale. J'ai un exemple de cette configuration à examples.chikachu.com/colorbox/example1 (je ne codez pas ColorBox, il est un outil gratuit jQuery que j'ai choisi d'utiliser, car il m'a permis de tester plusieurs différentes fonctions javascript et assurez-vous tous travaillé)
Maintenant le problème:
Il se trouve, cela fonctionne 99% du temps. Mais AJAX rend en colère. Cliquez sur l'un des exemples AJAX (sous la rubrique « Autres types de contenu ») ressemblera à ce que vous redirige vers une nouvelle page. En regardant dans la barre d'adresse ou d'afficher la page source prouvera que vous êtes toujours sur la même page, cependant. Utilisation de l'outil élément Vérifiez dans Chrome (ou Firebug dans Firefox) révèle que le contenu de la page Web ont été entièrement remplacées par le contenu de la requête AJAX.
Si je modifie parse_request.php légèrement pour permettre le fichier demandé par le AJAX pour être passé à travers sains et saufs, tout fonctionne. Aucun problème. Donc, pour quelque raison que mon script qui remplace la chaîne de hex avec son homologue HTML significatif est l'ensemble du site en écrasant au lieu de s'insérant bien dans les limites d'un
Pour l'essentiel est ici le HTML devrait non Obfuscated:
<html>
<head>
...
</head>
<body>
<div id="colorbox">
<INSERT AJAX HERE>
</div>
...
</body>
</html>
Avec seulement l'AJAX brouillées, j'attends les éléments suivants:
<html>
<head>
...
</head>
<body>
<div id="colorbox">
<script type="text/javascript">
var x="asdfasdfasdfasdf";
var y="";
for(i=0; i<x.length; i+=2){
y += unescape('%'+x.substr(i,2));
}
document.write(y);
</script>
</div>
...
</body>
</html>
Je pense que la ligne ici rédigera y document.write () à l'emplacement du javascript (dans le
La solution
Essayez quelque chose comme ceci:
<html>
<head>
...
</head>
<body>
<div id="colorbox">
<div id="MYAJAXCONTENT">
</div>
<INSERT AJAX HERE>
</div>
...
</body>
</html>
<html>
<head>
...
</head>
<body>
<div id="colorbox">
<script type="text/javascript">
var x="asdfasdfasdfasdf";
var y="";
for(i=0; i<x.length; i+=2){
y += unescape('%'+x.substr(i,2));
}
document.getElementById('MYAJAXCONTENT').innerHTML = y;
// for the jQuery psychos out there
// $('#MYAJAXCONTENT').html(y);
</script>
</div>
...
</body>
</html>
Autres conseils
Réponse à votre dernière question: Appel
document.write ( 'my_precious_html_code');
ajoutera ou remplacer le texte à la page en fonction quand il a été appelé (avant ou après l'événement onLoad). Vous ne devriez pas utiliser tout script . En savoir plus ici: http://javascript.crockford.com/script.html
Réponse générale: Dissimuler code HTML ne fait aucun sens. Tout comme la protection des images en désactivant le bouton droit de la souris à la fin '90. Il m'a fallu moins de 3 secondes pour « casser » votre code HTML obscurcie et obtenir magnifiquement formaté. De plus, votre site est rendu dans mode bizarreries qui est probablement quelque chose que vous ne voulez pas.