J'ai été embauché par quelqu'un pour effectuer de petits travaux sur un site. C'est un site pour une grande entreprise. Il contient des données très sensibles, la sécurité est donc très importante. Lors de l'analyse du code, j'ai remarqué qu'il était rempli de failles de sécurité: de nombreux fichiers PHP lisant directement les entrées / sorties des utilisateurs dans les requêtes mysql et les commandes système.
Le problème est que la personne qui a créé le site pour lui est un programmeur avec sa famille et ses enfants qui dépendent de ce travail. Je ne peux pas simplement dire: "votre site est un parc d'attractions pour enfants script. Laissez-moi le refaire pour vous et tout ira bien."
Que feriez-vous dans cette situation?
Mise à jour:
J'ai suivi quelques bons conseils ici et ai rapporté poliment au développeur que j'avais découvert quelques failles de sécurité sur le site. J'ai souligné la ligne et dit qu'il pourrait y avoir une vulnérabilité possible pour les attaques d'injection SQL là-bas, et a demandé s'il était au courant. Il a répondu: "Bien sûr, mais je pense que pour l'exploiter, l'attaquant devrait avoir des informations sur la structure de la base de données; je dois mieux comprendre" .
Mise à jour 2:
J'ai dit que ce n'était pas toujours le cas et lui ai suggéré de suivre ce lien de question Stack Overflow afin de le traiter correctement: Comment empêcher l'injection SQL en PHP? Il a dit qu'il l'étudierait et m'a remercié de le lui avoir dit auparavant. Je suppose que ma part est terminée, merci les gars.
la source
Réponses:
Tout d’abord, la priorité est de combler les failles de sécurité.
Si vous travaillez directement avec l'ingénieur qui a écrit ceci, documentez tout et donnez-le à cet ingénieur.
Sinon, informez votre employeur que les problèmes de sécurité sont plus importants que prévu initialement et que le site nécessite beaucoup de travail. Demandez à travailler avec le développeur principal qui se trouve sur le site et proposez-lui de vous renseigner sur la sécurité PHP (ne promettez pas de faire de la personne un expert, mais proposez de la former à tout ce que vous savez) pour que cette personne puisse en prendre le contrôle. après que vous avez terminé.
Ne faites pas de ceci un problème "ce type est mauvais, virez-le". "Hé, j’ai trouvé quelques bugs potentiels à corriger, qui semblent provenir d’ignorances / idées fausses sur la sécurité des sites. J'aimerais également parler de votre développement afin que nous puissions améliorer votre site. et, espérons-le, éviter d'autres problèmes à l'avenir. "
la source
Il y a une différence entre l'ignorance et l'incompétence. Il fut un temps où vous ne saviez pas non plus ce qu'était une injection SQL, et il n'y avait aucune raison de croire que le programmeur d'origine ne soit pas capable de résoudre les problèmes une fois qu'il en a été informé.
Alors dis leur. Soyez spécifique et objectif, et rendez-vous disponible pour répondre aux questions, fournir des exemples d'exploits et des recommandations de correctifs. S'ils ne l'obtiennent toujours pas après ce délai, vous ne pouvez au mieux que ne pas mettre vos informations personnelles sur le site.
la source
Votre travail ne consiste pas à refaire le site pour lui. C'est pour corriger le petit bug. Toutefois, si vous avez remarqué des problèmes de sécurité qui devraient être résolus, vous pouvez les contacter avec le propriétaire du site et leur donner une idée du problème.
Ne blâmez pas le développeur d'origine et ne lui parlez pas négativement, et ne commentez pas à quel point le code est horrible. Soyez respectueux et professionnel. Vous pouvez proposer de travailler avec le développeur pour résoudre les problèmes. N'essayez pas de résoudre le problème vous-même ou d'offrir une solution à moins que vous n'ayez contracté un contrat pour résoudre le problème. S'ils suivent vos conseils et que vous vous trompez, ils pourraient vous revenir.
la source
D'abord et avant tout, corrigez le problème pour lequel ils vous ont embauché. Si vous ne le faites pas, vous serez alors perçu comme le type de consultant intéressé à faire plus de travail pour lui-même, plutôt que de le faire.
En plus des correctifs, vous devez leur fournir une liste des problèmes que vous avez remarqués du point de vue de la sécurité et des raisons pour lesquelles ces problèmes sont incorrects.
la source
Cela ne servira à personne de ne pas signaler les problèmes. Si vous aviez une tâche spécifique pour laquelle vous avez été embauché, documentez les autres problèmes de sécurité tels que vous les avez vus et signalez-les à la personne appropriée, probablement la personne à laquelle vous vous rapportez pour la tâche pour laquelle vous avez été embauché.
C’est une situation dans laquelle de fortes compétences non techniques s’avéreront utiles car, pour y faire face avec tact, il ne faudra pas mettre le travail effectué par d’autres personnes sur le site et ne pas laisser le développeur avoir l’impression que vous remettez en question son talent.
Évitez évidemment les mots tels que "merde, mauvais, pauvre, criblé" lorsque vous vous référez au code / défauts et mots similaires du développeur qui a écrit le site.
la source
En plus des autres réponses, vous voudrez peut-être indiquer au développeur quelques ressources sur la facilité avec laquelle les problèmes d'injection SQL peuvent être exploités, par exemple sqlmap qui est un outil d'exploitation automatisé par injection SQL.
Ce que j’ai trouvé efficace pour démontrer la gravité de ce type de problème dans le passé, c’est de montrer ce que l’on peut en faire, alors si vous dirigez quelque chose comme ça contre un développeur. Une copie du site pour le montrer en extrayant des données, etc. vous pourriez les convaincre du sérieux.
la source
Premier et unique; La direction ne veut pas entendre parler de problèmes. Je me suis fait virer du Bureau de la gestion du personnel (autorisations de sécurité de la maison blanche) parce que j'avais souligné le manque de sécurité de leur système. C'était il y a longtemps, mais l'attitude de la direction n'a pas changé.
Abordez le problème avec le développeur, par courrier électronique pour vous laisser une trace, puis marchez ou fuyez. Quand ils auront éventuellement un problème, en tant qu'entrepreneur, ils essaieront de vous blâmer, peu importe leur implication, même si elle est liée au problème à distance.
Avoir un problème aussi fondamental qu’une injection SQL, indique qu’ils étaient bon marché lorsqu’ils ont initialement développé le système, et qu’ils sont au mieux économiques aujourd’hui. Obtenez ce que vous pouvez d'eux quand ils sont encore en affaires, mais cherchez le développement commercial ailleurs.
la source