Aller au contenu

Sujets conseillés

Posté

Hello!

Je désirerais installer un captcha sur un livre d'or, j'ai pas mal retourné le web avant de poser mon choix sur cryptograph 1.4, j'ai réussis à l'installer mais il ne fonctionne pas, il ne vérifie pas le code et laisse de ce fait passer le spam. J'ai rerevérifier l'instal et tout est correct, mais au vu du formulaire du livre d'or, un script de vérification déjà présent semble prendre le dessus.

Le formulaire - Livre d'or :

<?php 
$cryptinstall="./crypt/cryptographp.fct.php";
include $cryptinstall;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Formulaire Livre d'or</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta lang="fr" content="">
<meta http-equiv="imagetoolbar" content="no">
<style type="text/css">
<!--
_AT_import url("global.css");
body {
background-image: url("signer.jpg");
margin: 8px;
color: #ffffff;
font-weight: bold;
}
input {
font-family: verdana;
font-weight: bold;
font-size: 8pt;
color: #563B17;
border: 1px #563B17 solid;
}
textarea {
font-family: verdana;
font-weight: bold;
font-size: 8pt;
color: #563B17;
border: 1px #563B17 solid;
width: 320px;
height: 100px;
}
form {
margin-left: 12px;
}
h2 {
margin-bottom: 40px;
}
.commentaire {
font-size: 8pt;
}
-->
</style>
<script language="JavaScript" type="text/javascript">
<!--
function verifMail()
{
var regExp1 = new RegExp ("[\\w+\-\.]@[\\w+\-]");
var valeurMail = document.getElementById("mail").value;
if(valeurMail!="")
{
if(valeurMail.search(regExp1)==-1)
{
alert("Veuillez entrer une adresse mail valide ou ne pas en entrer.");
return false;
}
}
}
//-->
</script>

</head>
<body>
<h1 style="margin-bottom: 60px;">Signez le livre d'or</h1>
<h2>Remplissez le formulaire.</h2>
<form action="send_lo.php" method="post" onsubmit="javascript: return verifMail();">
nom* :<br />

<input type="text" name="nom" /><br /><br />

mail :<br />

<input type="text" name="mail" id="mail" /><br /><br />

commentaire* :<br />

<textarea name="commentaire"></textarea><br /><br />

<form action="verifier.php" method="post">
<table>
<tr><td><?php dsp_crypt(0,1); ?></td></tr>
<tr><td>Recopier le code:<input type="text" name="code"></td></tr>
<tr><td><input type="submit" name="submit" value="Envoyer"></td></tr>
</table>
</form>
<p class="commentaire">* Seuls les champs nom et mail doivent obligatoirement être remplis...</p>
</body>
</html>

.. et celui de verif mail (send_lo.php)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Formulaire Livre d'or</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta lang="fr" content="">
<meta http-equiv="imagetoolbar" content="no">
<style type="text/css">
<!--
_AT_import url("global.css");
body {
background-image: url("signer.jpg");
margin: 8px;
color: #ffffff;
font-weight: bold;
}
p {
text-align: center;
}
a {
color: #ffffff;
font-weight: bold;
}
a:hover {
text-decoration: none;
color: #ffffff;
font-weight: bold;
}
h2 {
margin-bottom: 40px;
}
-->
</style>

</head>
<body>
<h1 style="margin-bottom: 60px;">Signez le livre d'or</h1>
<h2>Envoi des données.</h2>
<?
include("connect.php");
include("mq.php");
$nom = mysql_escape_string($_POST["nom"]);
$mail = mysql_escape_string($_POST["mail"]);
$commentaire = mysql_escape_string($_POST["commentaire"]);
$date = strftime("%d/%m/%y à %H:%M:%S");
if($nom != "" & $commentaire != "")
{
$envoyer = mysql_query("INSERT INTO mpf_fr_livredor (nom, mail, commentaire, date) VALUES ('$nom', '$mail', '$commentaire', '$date')");
if(!$envoyer)
{
echo"<p>Les données n'ont pu être envoyées... Veuillez réessayer plus tard.</p>".mysql_error().
"<p><a href=\"javascript: history.back();\">Retourner au formulaire</a></p>".
"<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";
}
else
{
echo"<p>Envoi des données réussi.</p>".
"<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";
}
}
else
{
echo"<p>Le formulaire n'a pas été correctement rempli. Veuillez recommencer.</p>".
"<p><a href=\"javascript: history.back();\">Retourner au formulaire</a></p>".
"<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";
}
?>
</body>
</html>

Déja merci de vos avis :)

Posté

Voici le lien du site, j'ai glisser une erreur dans le formulaire pour éviter le spam, quelqu'un pourrait t'il m'aider à rendre ces deux scripts compatibles ? même s'il faut virer verifmail (j'ai bien tenté..) le captcha est primordial. Ou si une autre méthode vous apparait, parce que là je patauge complétement :(

Le site

Merci.

Posté (modifié)

Bonjour

Je ne connaissais pas cryptographp, mais une micro-recherche du style 'cryptographp crack|exploit' etc donne à penser que ce n'est pas le meilleur choix et que ses vulnérabilités dépassent le cadre du simple spam, comme les visiteurs vendeurs de viagra le laissent supposer... (http://seclists.org/fulldisclosure/2009/Mar/238)

Il vaut mieux googler un peu les scripts avant de les choisir.

Par ailleurs, ton livre d'or expose les e-mails des visiteurs ayant laissé un message sur le livre d'or, ce qu'il est préférable d'éviter (pour eux).

On trouve aisément des tutos de captcha ou des scripts plus robustes, je te suggère d'en changer.

Modifié par paolodelmare
Posté

Bonjour paolo et merci de ton attention, je suis bien d'accord avec toi sur cette histoire d'émail requis, mais je ne suis pas le concepteur et mes connaissances en ce domaine frise le zéro. Par contre, je peux suivre les conseils et m'appliquer, et à ce sujet, que me conseillerais tu comme sécurité à appliquer sur le formulaire, et quel code dois je supprimer pour rendre tout ca opérationnel ?

Posté

Bonjour, je ne fais quasiment plus de php (je développe en python/django).Je te suggère de supprimer cryptographp.

Les spammers développent leurs scripts anti captcha en fonction des outils plus populaires/vulnérables diponibles.

Je te renvoie vers un des nombreux tutos disponibles, notamment sur les captchas textuels, largement suffisants pour des sites à petite audience, ou le livre 'sécurité PHP5' de Seguy/Gamache chez eyrolles.

Si tu utilises un captcha image, il faut la "torturer" un peu pour que les caractères ne soient pas identifiés. C'est assez simple à lire avec une librairie OCR, comme les montrent ce post .

Bon courage!

Posté (modifié)

... Mon problème est que je n'arrive pas à intégrer correctement le captcha dans mon formulaire existant, le captcha fonctionne et l'envoi de données semble réussi, mais seul la date (générée automatiquement) est envoyée au serveur, les autres champs restent vide. Ou est ce que cela cloche ?

<?php
$cryptinstall="cryptographp.fct.php";
include $cryptinstall;
include("connect.php");
include("mq.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Formulaire Livre d'or</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta lang="fr" content="">
<meta http-equiv="imagetoolbar" content="no">
<style type="text/css">
<!--
_AT_import url("global.css");
body {
background-image: url("signer.jpg");
margin: 8px;
color: #ffffff;
font-weight: bold;
}
p {
text-align: center;
}
a {
color: #ffffff;
font-weight: bold;
}
a:hover {
text-decoration: none;
color: #ffffff;
font-weight: bold;
}
h2 {
margin-bottom: 40px;
}
-->
</style>

</head>
<body>
<h1 style="margin-bottom: 60px;">Signez le livre d'or</h1>
<h2>Envoi des données.</h2>
<?php
$nom = mysql_escape_string($_POST["nom"]);
$mail = mysql_escape_string($_POST["mail"]);
$commentaire = mysql_escape_string($_POST["commentaire"]);
$date = strftime("%d/%m/%y à %H:%M:%S");
if (chk_crypt($_POST['code']))
{
$envoyer = mysql_query("INSERT INTO mpf_fr_livredor (nom, mail, commentaire, date) VALUES ('$nom', '$mail', '$commentaire', '$date')");
if(!$envoyer)
{
echo"<p>Les données n'ont pu être envoyées... Veuillez réessayer plus tard.</p>".mysql_error().
"<p><a href=\"javascript: history.back();\">Retourner au formulaire</a></p>".
"<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";
}
else
{
echo"<p>Envoi des données réussi.</p>".
"<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";
}
}
else
{
echo"<p>Le formulaire n'a pas été correctement rempli. Veuillez recommencer.</p>".
"<p><a href=\"javascript: history.back();\">Retourner au formulaire</a></p>".
"<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";
}
?>
</body>
</html>

J'ai du supprimer cette ligne pour un "semblant" de fonctionnement, j'aimerais intégrer cette fonction ...

if($nom != "" & $commentaire != "")

En espérant votre compréhension face au total néophyte que je suis :blush:

Modifié par lemuse
Posté

Salut,

Peut-être devrais-tu suivre les conseils de paolodelmare et opter pour un captcha plus sécurisé et moins complexe à mettre en place ?

Tu devrais largement trouver ton bonheur ici.

Bon courage.

++

Patrick

Posté

Salut Patrick, je reconnais, ce n'est pas très respectueux vis à vis de paolodelmare et je m'en excuse, un peu têtu sur le coup :blush:

Mais, quel que soit le système de sécurité à installer (et il y en a pléthore) je me retrouve avec le même problème d'intégration à mon formulaire existant, le code est examiné et je l'on se retrouve sur une page indiquant : ok c'est bon ou c'est pas bon !

La suite de la vérification des champs ne se fait pas et aucun envoi sur le serveur.

C'est la connaissance des commandes, fonctions etc. qui me font défaut, tout ces langages sont vraiment intéressant, mais pour le coup j'y ai déjà passé près d'une semaine sans résultat et le boulot s'empile ...

Merci pour tes mots d'encouragement.

+

Posté

Ces soucis ne sont aucunement liés au système de captcha (qui ne fait rien d'autre que te donner l'accès à la page de traitement). Le fait que tu aies le bon message indique que le captcha fonctionne parfaitement.

Si toutes les données ne sont pas enregistrées en base, c'est un souci dans ton développement.

Après relecture du code, c'est assez simple à comprendre : tu n'as carrément pas de formulaire. Fatalement, rien ne peut s'inscrire dans ta base de données, exceptée la date (qui est générée automatiquement).

Posté

Salut captain_torche, voila mon formulaire :

<?php 
$cryptinstall="./crypt/cryptographp.fct.php";
include $cryptinstall;
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Formulaire Livre d'or</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta lang="fr" content="">
<meta http-equiv="imagetoolbar" content="no">
<style type="text/css">
<!--
_AT_import url("global.css");
body {
background-image: url("signer.jpg");
margin: 8px;
color: #ffffff;
font-weight: bold;
}
input {
font-family: verdana;
font-weight: bold;
font-size: 8pt;
color: #563B17;
border: 1px #563B17 solid;
}
textarea {
font-family: verdana;
font-weight: bold;
font-size: 8pt;
color: #563B17;
border: 1px #563B17 solid;
width: 320px;
height: 100px;
}
form {
margin-left: 12px;
}
h2 {
margin-bottom: 40px;
}
.commentaire {
font-size: 8pt;
}
-->
</style>
<script language="JavaScript" type="text/javascript">
<!--
function verifMail()
{
var regExp1 = new RegExp ("[\\w+\-\.]@[\\w+\-]");
var valeurMail = document.getElementById("mail").value;
if(valeurMail!="")
{
if(valeurMail.search(regExp1)==-1)
{
alert("Veuillez entrer une adresse mail valide ou ne pas en entrer.");
return false;
}
}
}
//-->
</script>

</head>
<body>
<h1 style="margin-bottom: 60px;">Signez le livre d'or</h1>
<h2>Remplissez le formulaire.</h2>
nom* :<br />

<input type="text" name="nom" /><br /><br />

mail :<br />

<input type="text" name="mail" id="mail" /><br /><br />

commentaire* :<br />

<textarea name="commentaire"></textarea><br /><br />
<form action="send_lo.php" method="post" onsubmit="javascript: return verifMail();">
<table>
<tr><td><?php dsp_crypt(0,1); ?></td></tr>
<tr><td>Recopier le code:<input type="text" name="code"></td></tr>
<tr><td><input type="submit" name="submit" value="Envoyer"></td></tr>
</table>
<p class="commentaire">* Seuls les champs nom et commentaire doivent obligatoirement être remplis...</p>
</form>
</body>
</html>

.

Posté

Il me semble que si ..

nom* :<br />

<input type="text" name="nom" /><br /><br />

mail :<br />

<input type="text" name="mail" id="mail" /><br /><br />

commentaire* :<br />

<textarea name="commentaire"></textarea><br /><br />

.

Posté

Génial !

Si tu savais la tension qui vient de s'évacuer d'un coup !

Merci à toi, merci à tous, je vais pouvoir m'attaquer à un système tel que recommandé par paolo, en attendant le livre refonctionne, super ! :thumbsup:

+ ;)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...