Sécuriser son formulaire de recherche (protection anti-robot)

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par noren, 24 Février 2015.

  1. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 816
    J'aime reçus:
    18
    Bonsoir

    Alors je ne cherche pas à savoir comment sécuriser mon formulaire des failles XSS et autres injections sql. Pour cela je pense avoir compris le minimum à savoir (découpage de la recherche saisie, retrait de certains mots clés, requêtes préparées, htmlspecialchars à l'affichage)

    Je cherche surtout une méthode pour éviter qu'un utilisateur copie le formulaire pour tester en distant celui ci afin de repérer plus facilement et rapidement les failles éventuelles. En gros un moyen de se protéger des robots.

    Alors j'utilise en général les Tokens pour la plupart des mes formulaires mais pour celui-ci je bloque.

    Le formulaire est en GET (plus simple pour la pagination, et si la page de recherche est linké quelque part c'est plus pratique)

    Le soucis avec le token c’est qu'il faudrait également le passer en GET et la évidemment ça pose problème car la page des résultats serait valable juste une fois ou au pire une courte période (il y aurait d'ailleurs le même soucis en POST). Donc si l'internaute visite un des résultats puis revient en arrière évidemment le token n’est plus bon ou pourrait ne plus l'être.
    Idem si un utilisateur partage sur la toile le lien de sa recherche, ce lien ne serait plus valable.

    Se baser sur le referer semble inutile également, donnée peu fiable.

    vers quelle solution se tourner? je pourrais éventuellement me baser sur un nombre maxi de recherche par jour/IP, mais est-ce suffisant? sachant que si une recherche retourne 20 pages de résultats et que l'internaute visite ces 20 pages. Ca lui comptabiliserais 20 recherches
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 161
    J'aime reçus:
    338
    Re: Sécurisé son formulaire de recherche ? (protection anti-robot)

    Pr les forms de recherche et pagination: http://fr.wikipedia.org/wiki/Post-Redirect-Get
    C'est quand même vachement plus clean que d'avoir [...]&submit=Recherche
     
  3. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 816
    J'aime reçus:
    18
    Re: Sécurisé son formulaire de recherche ? (protection anti-robot)

    je n'ai pas de [...]&submit=Recherche , pourquoi voudrais tu que le bouton submit apparaisse dans l'url?

    En mettant juste ce code, je n'ai pas ce problème :

    Code:
    <button type="submit" class="btn btn-default">Ok</button>
    Du moins tant que je ne met pas name="" dans la balise

    et je n'arrive pas a voir comment avec ça comment on se prémunit d'un éventuel robot :oops:

    D'ailleurs généralement c’est ce que je fais avec la plupart de mes formulaires qui sont en post, si celui-ci est validé je fais une redirection pour éviter les soumissions multiples. la dans le cas du formulaire de recherche une soumission multiples de la même recherche n’est pas un problème en soit.

    Je veux éviter qu'un utilisateur utilise un quelconque robot qui recherche des failles dans le formulaire en soumettant divers tentatives d'injections. Et éviter par la même occasion les abus de recherches qui pourraient surcharger le serveur.
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 161
    J'aime reçus:
    338
    Re: Sécurisé son formulaire de recherche ? (protection anti-robot)

    OK, c'est parce que pas de name="" sur le submit, ça l'évite oui.

    Si tu as bien échappé la query SQL et affiché les datas soumises via htmlspecialchars, je ne vois pas d'autres soucis. Pas besoin de protection CSRF (token) pr ce form.
     
  5. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 816
    J'aime reçus:
    18
    Re: Sécurisé son formulaire de recherche ? (protection anti-robot)

    Merci

    quand tu parles d'échappement de la query SQL j'imagine que tu fais allusion a mysqli_real_escape_string ou addslashes?
    J'imagine que les requêtes préparées suffisent?

    Surtout qu'en plus j'ai également une petite fonction qui fait supprime certains mots de la chaine avant de la découper et d'effectuer la requête:

    Code:
    str_ireplace(array("--", "script ", "/script", "<script", "script>","where", "update ", "update%20", "insert ", "insert%20", "delete ", "delete%20", "select ", "select%20", "href", "img%20", "img ", "HTML", "javascript", "count ", "count%20", "onclick", "onfocus", "=", " from ", "%20from%20", " and ", "%20and%20")," ",$chaine);
    je l'utilise uniquement dans les cas ou ces mots n'ont aucune raison d'y être (je suis très parano) :mrgreen:

    Si faille il y a , il faudrait vraiment que le pirate se prenne la tête, mais avec les robots qui testent rapidement les formulaires ont est jamais trop prudent. (J'ai essayé par exemple SQL Inject ME, ça fait froid dans le dos tous ces outils)
     
  6. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 161
    J'aime reçus:
    338
    Re: Sécurisé son formulaire de recherche ? (protection anti-robot)

    *_real_escape_string et requêtes préparées oui, mais pas addslashes() qui n'est pas fait pour.
     
  7. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 024
    J'aime reçus:
    1
    Re: Sécurisé son formulaire de recherche ? (protection anti-robot)

    Je comprends pas trop tes doublons dans la fonction mais peut importe ... on corrige pas une requête foireuse on exit point barre (et au passage on ban l'IP).
     
  8. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 816
    J'aime reçus:
    18
    Re: Sécurisé son formulaire de recherche ? (protection anti-robot)

    oui j'ai vu ces doublons au moment ou j'ai posté mais je suis allé bouffer :oops: . J'ai fait une petite modif que je dois encore améliorer.

    Code:
    public function Inject($chaine) {
    	$chaine = str_ireplace(array("%20", "<", ">","%3C", "%3E", "/", "%2F","=", "%3D", "--")," ",$chaine))
    	return str_ireplace(array(" script "," where ", "update ", "insert ", "delete ", "select ", "href", "img ", "HTML", "javascript", " count ", "onclick", "onfocus", " from ", " and ", " outfile ")," ",$chaine);
        }
    
    Après effectivement je pourrais annuler la requête si un mot douteux est présent, ban je sais pas trop faut être certain de ne pas bannir une personne qui a la base ne le méritais pas. Et bannir selon quoi? l'ip?
    je pourrais retourner true ou false et envoyer ou non le formulaire (c’est pas faux). je pourrais d'ailleurs faire croire qu'il est envoyé alors qu'il ne l'ai pas pour éviter de donner des pistes à l'éventuel pirate.
    faut surtout que j'évite de retirer ou d’empêcher des mots qui pourraient exister dans la langue française. C'ets pour ca que je laisse parfois des espaces ou non

    Normalement un utilisateur n'a aucune raison de mettre ces mots et ça peut éventuellement éviter certains risques dans l'éventualité ou on aurait laissé un trou quelque part.
     
  9. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 816
    J'aime reçus:
    18
    Re: Sécurisé son formulaire de recherche ? (protection anti-robot)

    oki merci :wink:
     
Chargement...
Similar Threads - Sécuriser recherche (protection Forum Date
Recherche à sécuriser des pdf Développement d'un site Web ou d'une appli mobile 22 Mai 2006
sécuriser upload fichier csv.gz Développement d'un site Web ou d'une appli mobile 9 Mars 2022
sécuriser les injections SQL Développement d'un site Web ou d'une appli mobile 20 Novembre 2014
Quel outil pour sécuriser un site ? vérification périodique des fichiers Administration d'un site Web 21 Octobre 2011
Comment sécuriser le lien de mon produit numérique ? e-commerce 18 Août 2011
Sécuriser le fichier error_log par htaccess URL Rewriting et .htaccess 2 Avril 2010
Sécuriser/protéger un site contre d'éventuelles attaques Développement d'un site Web ou d'une appli mobile 12 Mars 2010
Sécuriser l'index du site du duplicate à cause des index multiples Débuter en référencement 18 Février 2010
Sécuriser un Cookie d'authentification Développement d'un site Web ou d'une appli mobile 7 Février 2010
sécuriser un service web ? Développement d'un site Web ou d'une appli mobile 29 Juin 2009
Sécuriser un blog Wordpress en 7 étapes Développement d'un site Web ou d'une appli mobile 28 Mai 2009
Sécuriser un script php de téléchargement de fichiers Développement d'un site Web ou d'une appli mobile 13 Mars 2009
Sécuriser son site Internet Développement d'un site Web ou d'une appli mobile 26 Septembre 2008
Sécuriser un champ textaera (TinyMCE) Développement d'un site Web ou d'une appli mobile 10 Août 2008
securiser un formulaire avec mot a retaper Développement d'un site Web ou d'une appli mobile 29 Juillet 2008
Sécuriser WordPress et IPB Administration d'un site Web 17 Avril 2008
Connexion PDO : comment sécuriser les champs de formulaire? Développement d'un site Web ou d'une appli mobile 16 Avril 2008
Sécuriser et protéger son site web Administration d'un site Web 2 Octobre 2007
Securiser mon formulaire mail ? avec les p'tites lettres :) Développement d'un site Web ou d'une appli mobile 24 Juin 2007
Hack, massmailing, ralentissement : comment sécuriser? Administration d'un site Web 12 Mars 2007