30

Zerosquare (./28) :
Sauf que du coup, tous les hashes stockés en BDD deviennent invalides, donc le changement ne peut pas être automatique.

si : l'algo est stocké dans la chaine retournée par password_hash().

Quand tu as un mot de passe et que tu vérifie son hash (à l'identification d'un utilisateur, typiquement), tu fais ensuite appel à password_needs_rehash() pour voir si le mot de passe doit être re-haché (par exemple, parce que l'algo a changé).
Et si oui => tu stocke le nouveau hash (donc, généré avec le nouvel algo)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

31

Ah, je ne savais pas.

Bon, reste les autres arguments ^^
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

32

celui que PHP est codé par des manchots ? Sinon on commence à raisonner comme ça, autant passer à un autre langage ^^
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

33

Ce n'est pas moi qui l'ai dit grin et Pen² et Folco ne vont pas aimer ta métaphore embarrassed

Tout troll mis à part, la sécurité info est un domaine où une erreur apparemment insignifiante peut avoir des conséquences graves, donc en général il vaut mieux s'en tenir aux implémentations faites par des spécialistes. D'autre part, se reposer sur une couche d'abstraction qu'on ne comprend/maîtrise pas est potentiellement dangereux.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

34

Zerosquare (./33) :
D'autre part, se reposer sur une couche d'abstraction qu'on ne comprend/maîtrise pas est potentiellement dangereux.

entre se reposer sur une couche d'abstraction qu'on ne connait pas mais qui fait par défaut quelque chose de pas trop mal... et jouer un pauvre md5 des mots de passe (et encore, ça, c'est dans un cas où le gars a compris qu'il fallait pas stocker en clair)... mieux vaut la couche qui fait un truc pas trop mal foutu, non ?

si tu veux pas te reposer sur des couches d'abstractions que tu ne connais pas, il va pas te rester grand chose à par l'assembleur tongue et je doute que la qualité / sécurité soit meilleure qu'en PHP, avec 99.99% des développeurs ^^
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

35

C'est sûr que présenté comme ça... on peut aussi dire qu'il faut activer l'installation automatique des mises à jour sur les serveurs, si l'alternative c'est "personne n'installera les mises à jour" tongue

Mais de là à considérer que c'est la bonne méthode, il y a un pas que je ne franchirais pas hehe
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

36

Zerosquare (./35) :
si l'alternative c'est "personne n'installera les mises à jour" tongue.gif?9

Vu le nombre de vieilleries (que ce soit au niveau des versions de serveurs web, au niveau des versions de PHP, ou au niveau des versions de logiciels) qui trainent sur le net... il n'y a pas tellement de quoi rire, je crois sad
Zerosquare (./35) :
Mais de là à considérer que c'est la bonne méthode, il y a un pas que je ne franchirais pas hehe

Dans le cas du hachage de mots de passe, à choisir, je préfère un développeur qui ne comprend pas tout à la sécurité et qui passe par password_hash() (correctement branchée, ça va de soit), plutôt qu'un développeur qui ne comprend pas tout à la sécurité et qui passe par un md5() bien basique, hein.

Je dis pas non plus d'activer la MAJ automatique de tout et n'importe quoi sur des serveurs ^^ (encore que, des fois, ça serait peut-être pas plus mal... )
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

37

Des page web codé en ASM love
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

38

39

RHJPP (./23) :
Meowcate, tu veux tester quoi avec ce questionnaire ? Là, il ne me semble pas qu'il puisse te permettre de vérifier que le candidat connait CakePHP ou qu'il a des compétences dans un autre framework MVC.

Le test de code se fait ensuite sur CakePHP sur un ordi. Ici il s'agissait de voir quelques connaissances de base théoriques et un brin de réflexion pour que tous les candidats soient sur un pied d'égalité (on cherche un dev Cake, mais on accepte tout candidat ayant utilisé un framework PHP. Le second test leur laisse un code tourné et expliqué de façon à ce qu'un connaisseur de MVC avec un peu de logique (et internet) sache compléter l'application avec les questions demandées.
RHJPP (./23) :
Si vous cherchez quelqu'un de confirmé, ce test me semble trop long pour juste voir s'il connait le PHP alors qu'il faudrait plutôt vérifier que vous partagez les mêmes idées (ou que le candidat est prêt à intégrer les vôtres) de conception de code, de procédure de test, etc. Pour tester un candidat, vous pouvez par exemple lui donner de la documentation (maximum 10 pages) à lire avant l'entretien sur votre framework préféré ou sur ce que vous voulez et l'interroger dessus. Pour voir s'il sait coder, un petit programme avec quelques méthodes manquantes à compléter est suffisant. Avec connexion à internet et documentation, dans les mêmes conditions que le travail de tous les jours.

Il s'agit d'un deuxième niveau de sélection (le premier ayant été les CV. Nous réservons un troisième élément plus déterminant si nous en avons au final au coude à coude, nous avons deux candidats où nous avons beaucoup de mal à choisir pour l'heure, et ce ne serait pas du pile ou face.
squale92 (./24) :
6> aucune de tes propositions : PHP fournit password_hash() depuis PHP 5.5

PHP5.5 est encore peu répandu (et je peux parler, on bosse encore en 5.2 : c'est un prestataire indépendant qui nous fournit les serveurs. On discute avec lui pour la dernière version).
Mais du coup, ta proposition est ce que j'aurais le plus conseillé, bcrypt (password_hash en est une version intégré, intégré aussi en CakePHP>2.4 et algo possible en PHP<5.5).
Pour ceux qui ne connaissaient pas, je comptais privilégier sha256, md5 et sha1 sont un peu obsolète avec les
squale92 (./24) :
1> j'ai du mal à voir l'utilité de la question : soit le gars sait ce qu'est l'opérateur ternaire soit il ne sait pas... quoi qu'il en soit, utiliser un ternaire dans ce cas n'est pas "mieux" que de ne pas en utiliser.

Sur les 8 candidats qui sont passés jusqu'à présent, trois savaient ce qu'étaient les ternaires, 2 l'ont écrit correctement. Les autres ont pensé que c'était un triple if/else et ont rajouté donc une condition "égalité".
Un détail, mais intéressant à noter.
squale92 (./24) :
tu vois une autre solution que if (null === $foo) et if (is_null($foo)) ?

Non, mais là encore beaucoup semblent s'être trompé de mes candidats. J'ai eu (même après debriefing pour être sûr qu'ils avaient compris que je voulais un résultat strict à NULL des fois que j'aurais mal été compris) des == null et isset($foo) autant que !isset($foo) (décidez-vous).
squale92 (./24) :
7> la réponse attendue est "n'omettez jamais les break, sauf à mettre un commentaire explicitant que c'était voulu" ?

Toujours sur mes candidats, personne n'a "compris" l'absence de break. Certains ont donné une expression unique, d'autres le default du fait de l'absence des break, certains ont pensé que le switch planterait du coup.
Mais, plus grave à mes yeux : ils ont, pour la plupart, entendu parler du modulo. Là où ça devient inquiétant pour moi est qu'un codeur, c'est un peu matheux. Au moins niveau scolaire, non ? ne pas savoir quel est le reste d'une division... j'ai eu majoritairement du 0 et du 6, dans les deux cas parce que 8/5 = 1.6. Personne n'a répondu 3, pour le coup je suis déçu.
Et au cas où, j'attendais du coup Slam !Cram...Mam ?Tant pis...
squale92 (./24) :
8> tu as en tête le truc de barbare à base de explode + implode ? ou tu penses à quelque chose de plus moderne et plus safe genre DateTime::createFromFormat puis DateTime->format ?

Personnellement quand je ne veux pas me prendre la tête, j'utilise explode quand je sais le résultat. J'ai eu une réponse à explode, une autre avec des substr... au moins ça fonctionne. Il y en a bien un qui a tenté de l'objet (en se plantant, mais l'idée est là), mais la majorité m'ont sorti des date('Y-m-d', $date) sans passer $date au strtotime et sans se soucier de la locale. J'ai même eu 'YYYY-MM-DD' en motif.
Je veux bien que les dates soient l'un des concepts les plus pénibles (pas difficile, pénible) à manipuler quand on fait du code, mais du coup c'est un peu de base que je demande pour l'heure : la conversion d'un affichage de date SQL en un affichage humain/fr.
squale92 (./24) :
10 > $a=4 et $b=3 ? vu que $a est passé par référence ?

Yep, j'ai eu des résultats très variés (en fait toutes les combinaisons de 3 et 4 qu'on peut faire avec $a et $b), dont certaines bonnes réponses.
squale92 (./24) :
11 > il manque un exit() après tes header() de redirection.

Anéfé, du coup ça devrait appeler user.php et non pas admin.php. Mais parce que le if n'est pas bien formé, on n'y arrive pas. Et parce que la ligne in_array manque deux parenthèses fermantes, on n'y arrive pas.
Mais au final, une des réponses possibles qui m'intéressait le plus faute de voir ces bugs dans le code est que le bloc commençant par <html>, une erreur de header déjà envoyé serait signalée, et j'ai eu cette remarque pour certains.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

40

Rien que pour le salting qu'il ajoute, bcrypt est plus recommandable que sha256.

Dans ce contexte, ce n'est pas vraiment la "longueur" du hash qui compte.

Même si une cryptanalyse a été publiée, SHA1 n'a tjs pas été cassé en pratique dans sa version intégrale, donc il est toujours valable, surtout pour des chaines de caractères à longueur limitée comme un mot de passe.

41

squale92 (./34) :
il va pas te rester grand chose à par l'assembleur


Parfait, que vouloir de plus !!!



GT Asm powered !!!
avatar
Accrochez vous ca va être Cerebral !!

42

squale92 (./34) :
avec 99.99% des développeurs ^^

Ca présuppose qu'il ya ait au moins 10000 développeurs de sites web en asm pour qu'au moins l'un d'eux fasse du taf sérieux... cheeky
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

43