
chat-land.org : l'installation perverse de cherche.us
Posté par : Neg le : 2010-06-20 19:01:05
Le site de dialogue "chat-land.org" qui arrive en premier résultat Google d'une recherche "chat" a la très mauvaise idée d'installer sournoisement le moteur de recherche "cherche.us" en page d'accueil et en moteur de recherche par défaut sur votre navigateur.
Le site agit en utilisant votre inattention, en effet au moment de vous connecter au chat, en bas de la liste des salons de discussions il coche par défaut la case suivante :
Et ne vous étonnez pas si vous ne voyez pas ce choix, une fois que vous l'aurez coché, plus rien ne s'affichera en bas de cette page. Le mal étant fait.
A ce moment là, la page d'accueil de votre navigateur devient celle de cherche.us, et le moteur de recherche par défaut devient aussi cherche.us (qui est simplement un moteur utilisant les résultats de Google au profit d'une autre société.)
Voici ci-dessous comment modifier les paramètres de son navigateur pour supprimer l'intrus de votre vue.
Sous
Internet Explorer (8) :

Choisissez "Gérer les moteurs de recherche" dans le menu en cliquant sur la flèche à droite du bloc recherche.Puis choisissez le moteur que vous voulez mettre par défaut.
Pour la page d'accueil faites "Outils" -> "Options Internet"
Vous avez ensuite une fenêtre vous permettant de changer la page d'accueil ou de remettre celle par défaut.
Sous
Firefox :
Tapez "about:config" dans la barre d'adresse, passez le message d'avertissement "Je ferais attention, promis !" puis tapez "cherche" dans la boite "Filte" Ensuite "Réinitialiser" les valeurs.
Sous
Chrome :
via l'icône personnalisation (a droite, entouré sur l'image) choisissez "Options" la fenêtre vous permettra ensuite de définir la page d'accueil et le moteur de recherche à utiliser.
Sous
Safari :
Faire "Édition" -> "Préférences..." puis dans la fenêtre (onglet général) vous avez le choix du moteur de recherche par défaut et la page d'accueil.
Sous
Opera :
Même procédé que pour Firefox (voir plus haut), tapez "about:config" dans la barre d'adresse, puis cherchez "cherche" et remettez les valeurs par défaut.
Au lancement c'est le petit programme "binternet.exe" qui s'exécute et qui provoque les modifications. Vous pouvez le tuer en passant par le gestionnaire de taches. Ensuite surtout ne le relancez pas, il modifierait à nouveau vos préférences.
J'aime, 5 personnes aiment çaCommentaire(s)(0)

Sécurité d'un formulaire (php)
Posté par : Neg le : 2008-06-11 21:48:17
Pour permettre un véritable échange entre un site et ses utilisateurs; que ce soit en déposant un commentaire sur un blog, laissant un message sur un forum ou encore choisir un article pour le commander sur un site d'e-commerce, la plupart du temps cela passe par les formulaires. Cependant lors de la construction d'un site il faut faire attention aux données transmises par les formulaires, un contrôle strict sur certaines d'entres elles est parfois nécessaire pour ne pas laisser des "pirates" profiter d'une brèche. Nous allons voir comment.
Dans un formulaire de base, sur un système d'identification de type login/mot de passe par exemple, la meilleure façon d'éviter une injection sql reste - à ma connaisance - d'utiliser la fonction htmlentities de php.
Code html du formulaire basique
<form method="post" action="lapage.php">
<label>Mail : </label>
<input type="text" name="mail" / >
<br />
<label>Mot de passe : </label>
<input type="password" name="mdp" />
<br />
<input type="submit" name="login" value="ok" />
</form>
Code php de récupération et vérification des données.
//on sécurise les données
$mail=htmlentities($_POST["mail"], ENT_QUOTES);
$mdp=htmlentities($_POST[ "mdp"], ENT_QUOTES);
//ensuite ont peut faire une vérification sans risques
$req_verif_login="SELECT membre_id, FROM membres
WHERE membres_mail='".$mail."' AND membre_mdp='".$mdp."'";
$req_verif=mysql_query($req_verif_login) or die (mysql_error());
if(mysql_num_rows($req_verif)<1)
{
//action a effectué quand le login est mauvais
}
else
{
//action a éffectué si quand le login est correct
}
On évite ainsi au petit malin qui voudrait se connecter sans en avoir les droits de le faire. La fonctions htmlentities, transforme les caractères spéciaux en entités html, ainsi tout code malicieux affiché sur une page ayant été traité par cette fonction s'affichera en texte brut et ne sera donc pas exécuté. On se rend donc compte que cette approche et cette fonction est aussi intéressante quand les utilisateurs vont insérer eux mêmes des données (commentaires par exemple). Remarque que pour que la requête ci dessus fonctionne, il faut que les données (mail et mot de passe) aient étés auparavant enregistré dans la base de la même manière avec htmlentities.
Toutefois attention il n'y a pas seulement les champs "libres" (textbox, textarea, password) qui doivent êtres contrôlés, effectivement tout les champs d'un formulaire quels qu'ils soient (select, hidden, radio.. .) peuvent être assez aisément modifiés (transformés en textbox par exemple) avant d'être envoyé. Soyez donc bien vigilants au niveau des données sensibles.
Imaginons, une liste déroulant (select) proposant de sélectionner son pays. Il faudra tout de même utiliser la technique des htmlentities, car on pourras recevoir n'importe quel texte même si l'on s'attend à récupérer un nom de pays.
Mettons nous dans une situation particulière pour réfléchir à tout les contrôles que nous devons effectuer sur des données précises.
Notre cas :
Dans un petit jeux en ligne (php/mysql) comme il en existes beaucoup nous proposons aux joueurs d'acheter des biens avec l'argent virtuel qu'il à gagné depuis le début.
Disons que nous affichons le bien, son prix, et un liste déroulant qui proposera un nombre de 0 à X (suivant le prix du bien, et la cagnotte que le joueur possède). Dans ce cas, pour éviter les triches : ne pas faire confiance à la donnée envoyé par le select. Il re-faudra contrôler si le prix multiplier par le nombre choisi ne dépasse pas la cagnotte. Pour cela, on pourrait avoir tendance à envoyer le prix/et ou la cagnotte du joueur via des champs hidden. Erreur ! Hé oui, je l'ai dis, ces champs sont facilement falsifiables. Dans ces circonstances, nous somme obligé de récupérer la cagnotte du joueur et le prix de l'objet dans la base de données utilisé pour vérifier si l'achat est possible.
Le code devra donc avoir une structure proche de celle ci-dessous. ($_POST["choix"] étant la valeur renvoyé par notre select)
//faire la requête sql permettant de récupérer $cagnotte et $prix de l'objet
//vérification que la donnée ne soit pas négative
if($_POST["choix"]<0)
{
echo 'Vous ne pouvez pas acheter un nombre négatif d\'objets !';
}
else
{
if($_POST["choix"]*$prix>$cagnotte)
{
echo 'Vous n\'avez pas suffisamment d'argent pour effectuer cet achat !';
}
else
{
//c'est bon on peut enregistrer l'achat.
}
}
Rappelons une dernière fois, ne pas faire confiances aux données d'un formulaire, qu'elle qu'elles soient. Si les données ont une importance élevées pensez à tout vérifier. Et aussi sachez que le javascript est désactivable dans les navigateurs, un contrôle se basant uniquement sur ce langage est donc irréaliste.
J'aime, 0 personne aime çaCommentaire(s)(0)