Bonjour, j'ouvre se sujet libre pour répondre a mes multiple question, j'aimerais savoir tout se qu'il faut faire pour que notre site soit sécuriser au maximum :
-Y-t-il une base de donnée a suivre.
-Y-t-il des fonction a utilisé ?
...
Bref si vous connaissé la moindre chose sur la sécurité web écrivez le !
Oui, déjà, si tu veut entrer des informations (que l'utilisateur auras préalablement entrer dans des "input"), il faut faire une fonction qui évite les injections de code avant de tout faire rentrer dans ta BDD.
Pour cela;
Par exemple si tu veut faire entrer un pseudo dans ta BDD comme celà:
<input type="text" name="pseudo" />
Il faut que tu la sécurise en PHP de toute injection de code avec un "htmlspecialchars" comme cela:
$pseudo = htmlspecialchars($_POST['pseudo']);
Après, comme BDD simple à utiliser je te conseille MYSQL dans Wamp64.exe
"La connaissance de l'Homme ne peut pas s'étendre au-delà de son expérience propre", Locke
Attention htmlspecialchars ne sert qu'à l'affichage et pas pour une insertion en base. On peut très bien faire une injection sql avec un htmlspecialchars. Pour les requêtes il faut les préparer et bien sur toujours vérifier ce que ti reçois. Exemple, si tu demande un email tu vérifie le format. Un age tu regarde qu'il soit compris entre 1 et 150.
C'est pas très utile avec les sessions et avec un cookie on doit toujours vérifié ce que l'on reçoit. Juste un id c'est pas terrible car si je modifie le cookie je peux me faire passer pour n'importe qui.
Mais à chaque fois que tu envoie une requête et qu'ils ont besoin de l'un des cookies il le vérifie. Ne serai-ce que le cookie "lang" qui ne peux pas valoir n'importe quoi.
> Exemple, si tu demande un email tu vérifie le format. Un age tu regarde qu'il soit compris entre 1 et 150.
Encore une fois, valider n'est pas sécuriser. Ce sont deux tâches bien distinctes. La validation est facultative ; la sécurité, non. Prenons justement l'exemple d'une adresse email : la ' est, selon la RFC, parfaitement légale dans une adresse email or, si tu la valides avec filter_var + FILTER_VALIDATE_EMAIL, il te l'accepte. Maintenant, si tu te dis que valider suffit (pas de préparation ni échappement derrière) en pensant que la ' n'est pas acceptée, tu te fous le doigt bien profond dans l'oeil, te voilà avec une injection SQL. S'il y a bien une chose à faire dès le départ, c'est de sécuriser. Surtout que généralement, les validations, elles évoluent au fil du temps, elles sont rarement mises en place une fois pour toute dès le départ (et souvent bugguées).
Valider, c'est juste s'assurer que les données sont un minimum cohérentes par rapport à ce qu'on attend. Ca n'a RIEN à voir avec la sécurité, mais vraiment rien.
Je suis débutant et je fais que vérifier les champs que m'envoie les utilisateurs rien d'autre je ne comprends pas comment je peux les sécuriser je dois les écrire en hash ?
> Exemple, si tu demande un email tu vérifie le format. Un age tu regarde qu'il soit compris entre 1 et 150.
Encore une fois, valider n'est pas sécuriser. Ce sont deux tâches bien distinctes. La validation est facultative ; la sécurité, non. Prenons justement l'exemple d'une adresse email : la ' est, selon la RFC, parfaitement légale dans une adresse email or, si tu la valides avec filter_var + FILTER_VALIDATE_EMAIL, il te l'accepte. Maintenant, si tu te dis que valider suffit (pas de préparation ni échappement derrière) en pensant que la ' n'est pas acceptée, tu te fous le doigt bien profond dans l'oeil, te voilà avec une injection SQL. S'il y a bien une chose à faire dès le départ, c'est de sécuriser. Surtout que généralement, les validations, elles évoluent au fil du temps, elles sont rarement mises en place une fois pour toute dès le départ (et souvent bugguées).
Valider, c'est juste s'assurer que les données sont un minimum cohérentes par rapport à ce qu'on attend. Ca n'a RIEN à voir avec la sécurité, mais vraiment rien.
- Edité par julp il y a 17 minutes
Regarde bien je parle de préparer les requêtes et j'y ajoute après de vérifier les données. J'y ajouterais aussi de désactiver l'émulation des requêtes sous PDO.
Ca [valider] n'aurait même pas dû être mis sur le tapis.
On voit déjà assez de ********* concernant la sécurité en général : htmlspecialchars qui vaut pour les injections SQL, type="email|number|..." ou un contrôle JS qui t'assure des données valides, le fait d'utiliser PDO::prepare + PDOStatement::execute (sans bind, on injecte tout directement dans la requête) qui te prémunit des injections SQL et j'en passe.
A chercher trop compliquer les gens ne font au final rien pour sécuriser les données alors qu'il suffit de faire un prepare (avec marqueur ? ou :nominatif) et un execute si vraiment tu n'a que des chaines ou carrément un bind par marqueur. Et à cela la désactivation de manière globales de l'émulation des requêtes comme dit au dessus.
créer un token pour les requête qui utilise le $_GET ou du Ajax (éviter la faille csrf)
après, vérifier le formualaire, les pseudos écarte les trucks qui sont inutile tel que: /*-/*-/*--*é""é*-é"*-"éé"*- avec un regex
surtout le token créer un token qui change toute les x temps sur la session au moins même si un petit malin créer un script et récupérer le token, il changera tous le temps il lui sera donc inutile plein de chose comme sa
Salut,
Encore une fois il faut arrêter de confondre XSS et injection SQL. Si tu utilises cette fonction avant tes insertions alors il faudrait l'arrêter car ça n'apporte rien
Salut, Encore une fois il faut arrêter de confondre XSS et injection SQL. Si tu utilises cette fonction avant tes insertions alors il faudrait l'arrêter car ça n'apporte rien
je sais, le plus souvent on l'utilise une fois le renvoye sur tableaux
Directement filtrer le text renvoyé par un fetch par exemple.
mais faut quand même, l'utiliser avant une insertion certaine fois. autrement tes cuis !
enfin le plus souvent on utilise du regex, pour filtrer les pseudos etc etc ou des fonctions, dans les validations. sa sert tjr à sa au final. après le reste c'est bon ta pas de soucis à te faire.
Salut, Encore une fois il faut arrêter de confondre XSS et injection SQL. Si tu utilises cette fonction avant tes insertions alors il faudrait l'arrêter car ça n'apporte rien
mais faut quand même, l'utiliser avant une insertion certaine fois. autrement tes cuis !
Le htmlspecialchars avant une insertion ne sert absolument à rien et ne protège pas contre les injections SQL. Et en plus ça pollue tes données de choses que tu veux pas (en plus de prendre plus de place). Les méthodes comme htmlspecialchars ne s'utilise que à l'affichage point.
De plus ta fonction va replace des choses qui aurait pu être logique. Si j'ai envie de mettre un pseudo, mdp, mail ou autre qui contient script ou INSERT c'est mon droit. et ça ne fera pas d'injection sql.
OK merci beaucoup si j'ai d'autre question je reviendrais vers vous
Sécuriter PHP / JS
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
https://dev-crown.com/
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL