Code Java script pour MDP et problème page privée


#1

Bonjour,

puis-je insérer un script java dans une page du site (page avec carrousel)?

Je voudrais insérer un script java pour un mot de passe qui permettrait d’accéder aux pages abonnés, mais pour l’instant je n’ai pas réussi.

Si c’est possible, où dois-je le mettre?

Merci d’avance.


#2

Bonjour,

après beaucoup de recherches et de manipulations, j’ai fini par réussir à intégrer un script java dans une page de mon site.

Le problème est que la fenêtre en markdown accepte des bouts de html, à condition qu’ils soient “rabotés”, sinon ils ne s’affichent pas. Alors il faut enlever des bouts, tester, remettre un bout de bout, retester, jusqu’à ce que oh! miracle! le résultat escompté (dans mon cas un appel de login et mot de passe) apparaisse.

Pour ceux que ça intéresse, j’ai intégré un script java pour avoir accès à la partie abonnés de mon site par un mot de passe.

J’ai trouvé le script ici https://www.toutjavascript.com/main/script.php?url=passlog (avec son mode d’emploi), mais faire un copier-coller n’a pas marché du tout. Le script qui a fonctionné sur mon site est considérablement rogné (je l’ai aussi modifié pour n’avoir qu’un seul login).

Vous pouvez faire la comparaison avec le code donné par le site, et celui que j’ai intégré dans mon site, qui est le suivant:

**POUR ACCÉDER À L'ESPACE ABONNÉS, VEUILLEZ RENSEIGNER LE LOGIN ET LE MOT DE PASSE.**
<SCRIPT>
var total_erreur=0;

function Check() {
	var tabc=Check.arguments; var ok=0;
	var tab="                   azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@";
	for (var no=0;no<tabc.length;no++) {
		checksum=tabc[no];
		// table des caracters autorises
		var login=document.forms["flog"].elements["login"].value;
		var password=document.forms["flog"].elements["password"].value;
		var nblog=login.length;
		var nbpass=password.length;
		var sum=1;
		var n=Math.max(nblog,nbpass)
		for (var i=0;i<n;i++) {
			var index1=tab.indexOf(login.substring(i,i+1))+10;
			var index2=tab.indexOf(password.substring(i,i+1))+10;
			sum=sum+(index1*n*(i+1))*(index2*(i+1)*(i+1));
		}
		
			

		// calcul de la checksum. La fonction est modifiable !
		if (sum==checksum) {window.location=login+".html"; ok=1; no=100;}
		// test de la checksum
	}
	if (ok==0) {
		total_erreur++; 
		alert("Mauvais login ou mot de passe");
		if (total_erreur>2) { // apres 3 essais, redirection...
			alert("Vous avez atteint les 3 essais !\nVous allez voir la page d'explication");
			window.location="passlog2.html";
		}
	}

}
function Verifie() {
	Check(5410378)
}
</SCRIPT>

<FORM onSubmit="Verifie();return false;" action="#" method="get" name="flog">
	<TABLE border=0>
		<TR><TD><FONT size=2 face="arial">LOGIN : </FONT></TD><TD><INPUT name="login" type='text' size=8></TD></TR>
		<TR><TD><FONT size=2 face="arial">PASSWORD : </FONT></TD><TD><INPUT type="text" name="password" size=8></TD></TR>
		<TR><TD colspan=2 align=center><INPUT type='submit' name="bouton" value='Entrer'></TD></TR>
	</TABLE>
</FORM><BR>
<A href="passlog2.html"><B>Comment ça marche ?</B></A>


</CENTER>


<BR>
<BR>
<BR>
<BR>

<BR>
<BR>
<CENTER><A href="http://www.toutjavascript.com"><FONT size="1" face="arial" color="#CCCCFF">Tout JavaScript.com</FONT></A></CENTER>


</BODY>


</HTML>

<!-- Script développé par Olivier Hondermarck   -->
<!-- D'autres scripts et des conseils sur http://www.toutjavascript.com -->

Comme vous le voyez, il a fallu enlever quelques morceaux du script original. Mais le principal, c’est que cela fonctionne!

Voilà, c’est parfait, j’ai une partie du site réservée aux abonnés, ce qui me fait d’ailleurs une belle jambe, car je n’ai pas d’abonnés. Pas encore…

D’ailleurs, si ça vous dit, vous pouvez y faire un tour, qui sait…

https://lesmainsdanslatoile.frama.site

À bientôt pour de nouvelles aventures!


#3

Salut Pep,

Dis-moi. est-ce bien ce code que tu as intégré ? Parce qu’il me semble que tu as laissé beaucoup de choses inutiles, voire risquées. Dans ton cas, je constate que tu as du code en trop après la balise fermante </FORM>. Je suppose que c’est un reliquat de ton copier coller. Je pense que le code inutile ne devrait pas être dangereux car il me semble hors-contexte dans ton cas et devrait être ignoré par les navigateurs Web. Cependant, rien ne garantit qu’il ne le soit pas lors d’un prochaine modification. Tu devrais l’enlever, à mon avis, mais tout de même laisser les deux dernières lignes de commentaires afin, à minima, de gratifier l’auteur du petit script. Donc mettre ceci à la place :

**POUR ACCÉDER À L'ESPACE ABONNÉS, VEUILLEZ RENSEIGNER LE LOGIN ET LE MOT DE PASSE.**
<SCRIPT>
var total_erreur=0;

function Check() {
	var tabc=Check.arguments; var ok=0;
	var tab="                   azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_DISCOURSE_PLACEHOLDER_1#@";
	for (var no=0;no<tabc.length;no++) {
		checksum=tabc[no];
		// table des caracters autorises
		var login=document.forms["flog"].elements["login"].value;
		var password=document.forms["flog"].elements["password"].value;
		var nblog=login.length;
		var nbpass=password.length;
		var sum=1;
		var n=Math.max(nblog,nbpass)
		for (var i=0;i<n;i++) {
			var index1=tab.indexOf(login.substring(i,i+1))+10;
			var index2=tab.indexOf(password.substring(i,i+1))+10;
			sum=sum+(index1*n*(i+1))*(index2*(i+1)*(i+1));
		}
		
			

		// calcul de la checksum. La fonction est modifiable !
		if (sum==checksum) {window.location=login+".html"; ok=1; no=100;}
		// test de la checksum
	}
	if (ok==0) {
		total_erreur++; 
		alert("Mauvais login ou mot de passe");
		if (total_erreur>2) { // apres 3 essais, redirection...
			alert("Vous avez atteint les 3 essais !\nVous allez voir la page d'explication");
			window.location="passlog2.html";
		}
	}

}
function Verifie() {
	Check(5410378)
}
</SCRIPT>

<FORM onSubmit="Verifie();return false;" action="#" method="get" name="flog">
	<TABLE border=0>
		<TR><TD><FONT size=2 face="arial">LOGIN : </FONT></TD><TD><INPUT name="login" type='text' size=8></TD></TR>
		<TR><TD><FONT size=2 face="arial">PASSWORD : </FONT></TD><TD><INPUT type="text" name="password" size=8></TD></TR>
		<TR><TD colspan=2 align=center><INPUT type='submit' name="bouton" value='Entrer'></TD></TR>
	</TABLE>
</FORM>
<!-- Script développé par Olivier Hondermarck   -->
<!-- D'autres scripts et des conseils sur http://www.toutjavascript.com -->

Par ailleurs, je suis allé sur ton site pour voir à quoi cela pouvait ressembler. Cependant, je ne vois rien de tel. J’imagine que tu modifies encore ton site et que le résultat n’est pas finalisé.

Merci de ton partage en tout cas.


#4

Bonjour,

Faire de la vérification de login/mot de passe en javascript est fortement déconseillé. Si je connais le login (“admin” ?) de quelqu’un, il suffit que j’aille directement sur la page (d’après ton window.location=page+".html").
Enfin, quand bien même la page serait plus compliquée à trouver, je peux facilement éditer le code javascript et virer toute la vérification et forcer ok à 1.

C’est donc très dangereux car :

  1. pas du tout sécurisé
  2. tu penses que c’est sécurisé

#5

Merci beaucoup, PaliPalo, de ton message.

Je sais bien que mon script n’est pas du tout à la hauteur de mes modestes ambitions. J’ai cherché, j’ai trouvé un script qui ne fonctionnait pas, puis je l’ai élagué pour qu’il marche. Sauf que mes élagages étaient tout à fait “à vue”.

Je vais donc mettre ton script et ce sera très bien. Effectivement, je ne l’ai pas encore mis sur le site, car mes pages abonnés ne sont pas encore finalisées (et pour cause…)

À bientôt, merci.

Quant à toi, Mindiell, ici on te conseillerait de prendre du jus de maracuja pour te calmer un peu. Ça ne coûte rien d’être un peu aimable. D’autant que mes pages abonnés ne contiennent pas de secrets d’état. Et si tu peux trouver le code, félicitations, j’espère que tu fais un usage intéressant de ces compétences piratesques, mais l’utilisateur lambda (comme moi) en est bien incapable.


#6

Coucou Pep,

Je pense que tu as mal jugé les écrits de Mindiell. Il a simplement soulevé un point de sécurité qu’il estime être une mauvaise pratique. Et il n’a pas vraiment tort.

Tout est affaire d’analyse de risque dans l’accès aux données.

A quoi est utile l’espace abonné dans ton cas ? Configuration d’un profil pour personnaliser la lecture de ton site ? Accès à un page personnalisée ?

Est-ce que ces données contiennent des informations personnelles qui peuvent identifier de manière univoque quelqu’un ? Dans ce cas là, il faut pouvoir garantir la sécurité de ces données.

Mindiel a voulu simplement orienter ta réflexion sur cette problématique. Et je peux te dire que c’est un sujet sur beaucoup de lèvres dans le monde professionnel avec le RGPD.


#7

Tout à fait :o)

Je ne connais pas le maracuja, je vais aller chercher sur internet ;o)

Pour le reste, j’ai écris ça rapidement, donc j’ai peut être été un peu sec : désolé !
En tout état de cause, je souhaitais souligner que la “protection” n’en était pas une, et que quitte à faire ça, autant ne rien faire. De plus, c’est surtout que je voulais prévenir qu’il est plus dangereux de croire que c’est sécurisé quand ça ne l’est pas que de savoir que c’est pas super sécurisé mais au moins on le sait.

Exemple concret : C’est un peu comme si je mettais une serrure sur ma porte avec les vis côté extérieur. J’ai l’impression que c’est sécurisé, alors que n’importe qui avec un tournevis saura enlever la serrure et entrer.

L’idée étant que tu n’as pas de secret d’état, on est d’accord, mais tu souhaites sécuriser les accès. Avec la “protection” décrite ci-avant, tu n’auras aucune sécurité réelle. La question est donc, comme l’a dit PaliPalo : Quelle sécurité souhaites-tu ? Comment peut-on t’aider ?

Voilà, voilà !
Et encore désolé d’avoir semblé sec dans ma première réponse…

PS: La grenadille (autre nom de la maracuja) semble intéressante, merci pour l’idée !


#8

Bonjour les amis,

je remercie PaliPalo de son message, et de sa bonhomie habituelle, qui me permet de rebondir de manière un peu moins sèche sur ce sujet très délicat de notre sécurité informatique.

Je te comprends tout à fait, Mindiell, d’avoir réagi au quart de tour sur ce sujet très important.

J’ai moi-même répondu un peu brutalement, pour une raison différente, mais tout aussi cruciale, qui concerne la qualité des rapports humains. Ce doit être parce que je vis dans un riant pays où l’on a décidé que les rapports inter-personnels et sociaux s’amélioreront en libérant complètement la possession et le port d’arme (le maracuja, c’est du passé…)

Pour revenir au sujet de la sécurité informatique, je ne me fais aucune illusion quant à la protection de mes données. C’est la raison pour laquelle j’ai largué windows depuis plusieurs années, que je ne pratique pas les réseaux sociaux dominants et que j’essaye de protéger ma navigation (et même ainsi…)

Les pages abonnés de mon site ne contiennent pas de secrets d’état, c’est vrai. Mais cette affirmation revient à peu près à celle qui consiste à dire “je n’ai rien à cacher”, avec les conséquences désastreuses que l’on sait (règles et lois liberticides mises en place sans réaction puisque “on a rien à cacher…”). Donc, j’ai tort.

D’un autre côté, il n’est pas question que ces pages abonnés contiennent des données personnelles. Y figureront les projets proposés dans leur intégralité, c’est à dire des poèmes, des pièces de théâtre, des feuilletons, protégés (ou non) par leur auteur (mais c’est leur problème), un module de discussion pour chaque projet (pop up - que j’ai déjà réussi à mettre en place, une gageure pour moi), ainsi que des conseils techniques, dont je pense qu’un hacker peut se passer.

Je privilégie la communication importante par message privé sur Framapiaf.

Donc, le système actuel par mot de passe (qu’un pirate peut trouver, mais pas l’utilisateur lambda puisque le mot de passe ne se trouve pas dans le code source) me convient.

J’ai toutefois un problème: au bout d’un certain temps, j’imagine que la page abonnés va finir par être répertoriée par google, et en l’état actuel, si l’on connaît le nom de la page (ce qui sera le cas des abonnés, d’ailleurs), on y a accès.

J’y vois 3 solutions:

  1. ou je change souvent le nom de la page, et je la communique aux abonnés;
  2. ou je fais en sorte que la page abonnée ne soit pas prise en compte par les moteurs de recherche,
  3. ou je fais en sorte que la page ne puisse pas s’afficher tant qu’un mot de passe n’est pas renseigné.

Je ne sais pas faire les items 2) et 3). Sachant que je peux associer 1) et 2).

Une idée?

Merci, et à bientôt.


#9

Pour le 2, je dirai de jeter un oeil là : https://support.google.com/webmasters/answer/93710?hl=fr


#10

Merci pour l’info.

J’a pris le code, je vais le mettre au début du corps du texte markdown de la page-mère de ce nouveau carrousel et on verra si ça marche.


#11

Afin de résoudre le problème de mot de passe évoqué plus haut, j’ai souhaité créer une page privée et ajouter des utilisateurs.

Comme cela a déjà été mentionné dans d’autres messages, cette fonction ne fonctionne pas pour l’instant (la page privée reste visible et le nouvel utilisateur est systématiquement administrateur, même en décochant la case admin).

Croyez-vous que cela peut être résolu? (on est pas à la minute non plus) et pourriez-vous informer la communauté quand ce service sera disponible?

Merci beaucoup à l’avance, et chapeau pour votre travail!


#12

Hello ! J’ai du mal à voir ce dont on parle : dans la configuration du site lui-même (Grav) ou dans la partie gestion Framasite ? (peux-tu joindre une capture d’écran ?)


#13

Bonsoir,
Je pense que c’est peut être de ça dont parle Pep :