8797 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Mon titre est certainement assez explicite, j'ai lu quelques docs sur la sécurisation php contre les bibliothèques et les force brute (ainsi que les tables en arc-en-ciel), je pense avoir compris la globalité, et donc j'ai essayé de trouver un moyen de palier (tout du moins de ralentir) les forces brutes, je vous explique comment je procède:

avant d'enregistrer le cookie, j'utilise la fonction ereg_replace pour mélanger grâce à un algorithme que j'ai moi même étudié le mot de passe qui est hashé (je ne sais pas si c'est le terme exacte), lorsque le cookie est lu, j'utilise un algorithme retour pour obtenir à nouveau la bonne chaîne sha1.

Ainsi > la personne ne peut pas essayer de trouver le mot de passe en local, et si toutefois elle en trouvait un, il serait erroné (corrigez moi si je me trompe). Cependant, pour que cette méthode reste efficace, il faut que le pirate ne puisse pas avoir accès à ma fonction.

-Est-ce qu'un pirate aurait un moyen d'avoir accès à ma fonction sans avoir accès au code source de ma page ?

-Est-ce que cette méthode est intelligente ?

-Est-ce que cette méthode est pompeuse ?

-Je pensais rajouter des chiffres / lettres avec la fonction ereg_replace pour renforcer la sécurité (ie si le pirate essaye de force-bruter le sha1 en local, il ne pourrait pas savoir quelles chiffres / lettres sont superflux et à supprimer)

Qu'en pensez vous ? Est-ce que je me complique la vie ? Existe t-il des méthodes plus simples, plus efficaces pour ralentir plus efficacement les forces brutes en local ? Merci de votre aide !
Modifié par circle (05 Aug 2008 - 13:04)
Les SHA sont des algorithmes très efficaces il n'y a pas besoin de les modifier.
Cependant la meilleur méthode, si j'ai bien compris le problème, c'est tout simplement de ne pas stocker de mot de passe en local. S'il s'agit ici de système d'identification les sessions PHP sont plus sécurisées.
J'ai vu que l'on pouvait accéder très facilement à une session ouverte par un autre utilisateur, je trouve ça problématique.

Pour les Sha, je suis d'accord, c'est très efficace, en online, mais en local, il suffit de faire une boucle

while (sha1($pass_seeker) != $pass) {
[i]/* insérer ici un algorithme qui va incrémenter $pass seeker avec tous les caractères acceptés par le site. */[/i]
echo 'Le mot de passe utilisé: '.$pass_seeker.'<br />';
}


Après plus ou moins longtemps, selon les performances de l'ordinateur et la complexité du code, le code sera déchiffré (à partir du moment où la personne a bien écrit son algorithme). J'ai lu que les codes les plus tordues pouvaient être décryptés en moins de 160 secondes en utilisant cette méthode, même pas 3 minutes.

C'est pourquoi j'ai pensé à modifier la chaîne du sha1 comme cela, si la personne trouve un code correspondant à cette chaîne, il risque de trouver Courgette au lieu de hK4sde3aSff7, et ne pourra donc rien faire de ce code. Le seul moyen pour lui alors serait de connaître mon algorithme de modification du sha1, c'est pour cela que je voulais savoir si il avait un moyen de récupérer cet algorithme, là ça serait problématique.

Quant aux sessions, sur cette page: http://phpsec.org/projects/guide/fr/4.html
il est indiqué qu'elles peuvent facilement être volées, je n'ai plus l'exemple sous les yeux mais par exemple, sur un autre forum, créer un lien vers mon forum avec une sessid bidon, la personne se log et derrière le pirate se connecte sur la page avec cette sessid et se retrouve connecté sous son identifiant afin d'usurper son identité.

Les seules solutions qu'ils proposent sont d'utiliser l'user-agent ainsi qu'un grain de sel, cependant, les personnes utilisant les même navigateurs ne sont pas rares et tout en bas, il y a une note qui affirme que cet en tête n'est pas assez cohérent pour utiliser cette méthode.

Si je veux utiliser des sessions, il est très important que personne ne puisse l'usurper, hors je n'ai pas trouvé sur le net de solution, mis à part les SSL, mais si j'ai bien compris, c'est payant.

Merci pour ta réponse Changaco, merci aux autres qui essayent de m'aider également !
Ta façon de penser c'est la façon Windows : je fais des trucs risqués mais j'encode l'encodage et je cache les sources en espérant que personne ne trouve. Le problème c'est que ça finit toujours pas être cracké.

On ne stocke pas de mots de passe en local un point c'est tout.

Les sessions c'est pas si simple que ça à voler et de toute façon il y a toujours une faille quelque part donc désolé de te décevoir mais tu n'arriveras pas à faire un système 100% sécurisé.
Pour les sessions tu peux déjà stocker les id dans les cookies et non dans l'url, utiliser le renouvellement d'id et éventuellement un système de vérification d'IP. Sinon y a aussi les .htaccess pour l'identification.
Administrateur
Bonjour,

Tout le monde peut utiliser SSL. Ce qui est payant, c'est d'obtenir un certificat auprès d'une autorité certificatrice extérieure (donc tierce et commerciale et €€€) mais tu peux très bien générer ton propre certificat si ça te chante. Le problème est dans la confiance que te prêteront tes visiteurs, qui dépend de l'enjeu de ce que tu as à protéger (2 millions de comptes bancaires en ligne ou une sécurisation pour les visiteurs qui surfent souvent depuis un WiFi public ...).
edit: OVH le fait à quelques dizaines d'Euro, ce ne sont peut-être pas les seuls. D'autres profitent à fond de leur réputation.
Modifié par Felipe (05 Aug 2008 - 12:42)
Ok, merci pour vos réponses très utiles, j'utiliserais donc SSL par la suite.

Merci !
Modifié par circle (05 Aug 2008 - 13:04)