OVH Cloud OVH Cloud

unescape bloqué par " ?

6 réponses
Avatar
Bernard Philip
bonsoir tous,
ci-dessous pti script qui fonctionne (les 2 write sont corrects)
<html><head></head>
<body>
<script language="javascript">

// %22= "
// %3E= >

debut =
(unescape("%3C%73%63%72%69%70%74%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61"));
document.write (" debut :" + debut + "<br>");
suite1 = (unescape("%76%61%73%63%72%69%70%74"));
document.write (" suite1 :" + suite1 + "<br>");

suite2 = (unescape("%22%3E"));
//document.write (" suite2 : " + suite2 + "<br>");

</script>
</body>
</html>

par contre si je débloque le 3ème document.write,
l'affichage s'arrete dés le 1er !!??
vos lumières, mes trés chers ?
wheris the bug ?
merci d'avance

6 réponses

Avatar
ASM
Bernard Philip wrote:

wheris the bug ?
merci d'avance


the bug est que tu veux faire écrire une balise
et que ...
par escence, une balise n'est pas visible
donc, pas étonnant que dès que le navigateur se rend compte de la chose
il veuille rendre invisible ce que tu tentes d'écrire

si tu changes l'un des '<'(%3C) ou '>'(%3E)
par son html-entité le truc marche(*) :

document.write(unescape('&lt;%73%63%72%69%70%74%20%6C%61%6E%67'+
'%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E'));


(*) les 2 doivent marcher, mais pov' de nous, on n'en voit qu'une
tenter de faire écrire une fonction, ou un bout de code html,
par cette méthode ?

document.write(unescape('%3c')+'a href="'+
unescape('%6A%61%76%61%73%63%72%69%70%74')+
":alert('"+unescape('%6A%61%76%61%73%63%72%69%70%74')+"'"+')"'+
unescape('%3e')+'test'+unescape('%3c')+'/a'+unescape('%3e'));


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Bernard Philip
On Tue, 12 Jul 2005 00:17:49 +0200, ASM
wrote:

Bernard Philip wrote:

wheris the bug ?
merci d'avance


the bug est que tu veux faire écrire une balise
et que ...
par escence, une balise n'est pas visible
donc, pas étonnant que dès que le navigateur se rend compte de la chose
il veuille rendre invisible ce que tu tentes d'écrire

si tu changes l'un des '<'(%3C) ou '>'(%3E)
par son html-entité le truc marche(*) :

document.write(unescape('&lt;%73%63%72%69%70%74%20%6C%61%6E%67'+
'%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E'));


tjours aussi rapide et fiable, cher stephane, c ok

mais pourquoi le navigateur detecte le %3C, et pas le &lt ?
merci d'avance


Avatar
ASM
Bernard Philip wrote:

mais pourquoi le navigateur detecte le %3C, et pas le &lt ?
merci d'avance


ben ... le &lt; est un caractère en html-entité
c'est à dire que c'est du caractère à afficher
et à ne surtout pas considérer comme du caractère de code

et comme unescape() n'est pas prévu pour escaper du html-entité
ce dernier est préservé dans la traduction (il reste écrit &lt;).

dernière proposition de test :

document.write(unescape('<%73%63%72%69%70%74%20%6C%61%6E%67'+
'%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E'));

qui va te donner ce que tu pensais une erreur ->
'<' n'a pas à être traduit par unescape() puisque déjà *en clair*

alert(unescape('<%73%63%72%69%70%74%20%6C%61%6E%67'+
'%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E'));

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Bernard Philip
On Wed, 13 Jul 2005 00:57:28 +0200, ASM
wrote:

Bernard Philip wrote:

mais pourquoi le navigateur detecte le %3C, et pas le &lt ?
merci d'avance


ben ... le &lt; est un caractère en html-entité
c'est à dire que c'est du caractère à afficher
et à ne surtout pas considérer comme du caractère de code

et comme unescape() n'est pas prévu pour escaper du html-entité
ce dernier est préservé dans la traduction (il reste écrit &lt;).

dernière proposition de test :

document.write(unescape('<%73%63%72%69%70%74%20%6C%61%6E%67'+
'%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E'));

qui va te donner ce que tu pensais une erreur ->
'<' n'a pas à être traduit par unescape() puisque déjà *en clair*

alert(unescape('<%73%63%72%69%70%74%20%6C%61%6E%67'+
'%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E'));
en effet, tes 2 exemples ci-dessus bloquent l'affichage;

je retiens qu'il faut coder en entité (&..) pour que unescape
laisse le car. tel quel
ma motivation était (suite à une demande de ma Présidente de ne pas
pouvoir imprimer les pages de notre site associatif),
de décoder le source produit par Advanced HTML Protector
(dont mon exemple était extrait)
pour lui montrer que la protection est limitée;
il semble d'ailleurs qu'il y a une soluce tt à fait différente,
avec le div "noprt",
mais ptet un autre thread à ce sujet, dans le news html et non JS ?
merci encore, Docteur
bien cordialement


Avatar
ASM
Bernard Philip wrote:
ma motivation était (suite à une demande de ma Présidente de ne pas
pouvoir imprimer les pages de notre site associatif),


pour le visiteur pas trop fut'


<link href="styles.css" rel="stylesheet" type="text/css" />

<style type"text/css" media="print">
body { display: none}
</style>

</head>

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Jul
ASM a émis l'idée suivante :
Bernard Philip wrote:
ma motivation était (suite à une demande de ma Présidente de ne pas
pouvoir imprimer les pages de notre site associatif),


pour le visiteur pas trop fut'


<link href="styles.css" rel="stylesheet" type="text/css" />

<style type"text/css" media="print">
body { display: none}
</style>

</head>


... Enfin il faut aussi prévenir le visiteur car si le contenu site
tente le visiteur à l'impression, il va s'acharner parce qu'il ne
comprendra pas pourquoi son ordinateur imprime le haut et bas de bas,
mais rien entre les deux... donc un petit "suite à une decision
administrative, l'impression du contenu de ces pages n'est plus
supportée. N'essayez pas d'imprimer comme un veau, vous gacheriez de
l'encre et des feuilles" en plus soigneusement tourné serait le
bienvenu.
:o)

--
Jul... réapparru comme par enchantement