2010-11-18 18 views
0

je dois échapper bloc entier de code javascript en utilisant escape() compatible avec la fonction via PHP, puis placer le code JavaScript résultant en un code construis comme ceci:évasion Porting JavaScript() pour PHP

document.write(unescape(ESCAPED_JS)); 

Je ne suis pas essayer d'augmenter la sécurité en faisant cela, protéger le code, ou quelque chose comme ça. Juste pour rendre un peu plus difficile de jeter un coup d'œil sur un code et voir ce qu'il fait.

Quelqu'un at-il une solution de travail pour cela, ou une idée de comment le faire? La seule référence que j'ai trouvée à ce sujet est sur this page, mais elle ne traite que de la chaîne JS échappée en utilisant PHP, mais en prenant particulièrement soin des caractères UTF-8 (que je dois aussi prendre en compte).

+1

'escape()' et 'unescape()' ne fonctionnent pas avec caractères non-ascii. Mon conseil serait de l'oublier, l'obfuscation ne fera qu'encourager d'autres personnes. –

+0

Ne faites pas cela ... – Incognito

+1

Sur une note de côté, vous voudrez peut-être consulter le YUI Compressor (http://developer.yahoo.com/yui/compressor/). Il remplacera les noms de variables par des lettres simples (si possible) et supprimera tout espace blanc inutile. Non seulement cela rend un script très difficile à lire, mais il réduit également la taille, ce qui diminue les temps de chargement de la page. – Brendan

Répondre

2

escape n'est pas une fonction standard. Mieux vaut utiliser encodeURIComponent ou JSON à la place.

+0

Eh bien, si ce n'est pas la fonction standard, alors il n'est pas nécessaire de le porter n'importe où. Merci. Je vais utiliser un compresseur JS pour résoudre mon problème. –

0

Vous devriez pouvoir utiliser urlencode et urldecode pour ce faire.

http://php.net/manual/en/function.urlencode.php

+0

... et la contrepartie Javascript? –

+0

Je suis incapable de le faire en utilisant les fonctions urlencode/decode (raw), car ils encodent uniquement des caractères spéciaux. –

1

Gumbo est juste (comme toujours), mais je pense que rawurlencode et rawurldecode sont les équivalents php de js escape et unescape