Question intéressante! J'aimerais y répondre davantage du point de vue des probabilités que du point de vue des meilleures pratiques actuelles.
Bien que Thomas et d'autres fournissent d'excellentes réponses, je ne pense pas qu'ils touchent à la question fondamentale - qui est "est unique (ou moins utilisé) code plus résilient en pratique que le code populaire ". Notez que je n'ai délibérément pas utilisé "plus sécurisé que le code populaire". Et en quoi cela se résume-t-il à un cas particulier de «la sécurité par l'obscurité fonctionne-t-elle»?
Et (et je sais que ce ne sera pas une réponse populaire) je pense que lorsque nous remplaçons «sécurisé» par «résilient», la réponse ne sera peut-être pas toujours généralement acceptée «jamais!»
Il est clair qu'il est probablement moins sécurisé (ce qui signifie: il est très probable que votre propre code de sécurité soit plus facile / plus rapide à déchiffrer que le code populaire qui avait déjà subi de nombreuses attaques et corrigé par des personnes plus intelligentes que vous).
Cependant, à moins que vous ne soyez un site grand / populaire, il est également clair que vous êtes beaucoup moins intéressant pour les crackers potentiels s'ils ne peuvent pas réutiliser le code / l'effort dépensé pour vous cracker, et cet effort n'est pas anodin (ce qui signifie que votre site ne tombera pas en panne aux sondes de non-validation / d'injection SQL de paramètres automatisés ). Cela ne fonctionne évidemment pas si vous êtes ciblé spécifiquement (espionnage industriel, etc.), mais la grande majorité des attaques de cette époque semblent en fait être des sondes automatisées pour des logiciels populaires.
Donc, si la question n'est pas "qui est plus sûr", mais "qui est moins susceptible d'être fissuré", la réponse pourrait en fait être "cela dépend". Voici quelques exemples:
Exemple 1: Imaginez un ordinateur Microsoft Windows 8.1 (ou tout ce qui est populaire de nos jours), avec actuellement aucune faille de sécurité connue, acheté mais jamais mis à jour, connecté à Internet. Imaginez également Windows 3.11 vieux de plusieurs décennies avec winsock, jamais corrigé, avec des centaines de failles de sécurité connues, connecté à Internet. Les deux sont utilisés de la même manière. Ignorer aux fins de discussion la qualité de l'accès ... La question est de savoir, qui sera brisé plus tôt?
S'il est évident que 3.11 est beaucoup moins sécurisé, il n'y a guère d'exploits à l'état sauvage le ciblant . Il se pourrait donc qu'il y ait un exploit de 0 jour massivement populaire pour 8.1, avant que 3.11 ne frappe un exploit archaïque qui parvient à s'exécuter dessus.
Exemple 2: Imaginez que vous ayez le dernier CMS Joomla sur un serveur Web sans exploits actuels connus, et un script perl fait à la main faisant des choses CMS-ish, avec des bogues exploitables connus (mais aucun d'entre eux n'est suspect pour les tests automatisés actuellement disponibles). Après un an, quelles sont les plus grandes chances qu'il soit exploité?
Bien que des preuves anecdotiques, dans quelques dizaines (à des centaines) de cas que j'ai eues au cours des dernières décennies, c'était dans la grande majorité des cas aussi populaire le logiciel a été exploité, alors que les logiciels obsolètes continuent de fonctionner jusqu'à ce jour sans être dérangés.
Autre chose à considérer:
- si un logiciel populaire effectue une mise à jour automatique (ou si les administrateurs le mettent TOUJOURS à jour rapidement), alors les faiblesses d'un tel code populaire sont beaucoup réduites (mais pas éliminées, en raison d'exploits de 0 jour et non publiés) et présentent donc un grand avantage
- à l'inverse, si le logiciel ne reçoit aucune maintenance, non populaire (comme l'auto-écriture) peut en fait être moins suspecte de problèmes
- blâme - il peut souvent être avantageux d'utiliser des logiciels populaires. Si la moitié du monde est touchée, vous ne serez pas autant blâmé que si vous étiez un programmeur unique. Ceci est particulièrement important si vous travaillez avec de l'argent. Il est souvent «préférable» d’être moins sûr, mais de pouvoir rejeter la responsabilité, que d’être plus sûr, mais de devoir assumer le coût vous-même lorsque l’exploit se produit.
- travail - déjà mentionné par d’autres, populaire le logiciel se corrigera dans la grande majorité des cas, il vous suffit de mettre à jour - ce qui est beaucoup moins de travail que de trouver et de corriger les bogues vous-même (mais nécessite encore une maintenance)
- un autre L'avantage des logiciels auto-écrits est souvent la réduction de masse du code (ce qui entraîne moins de bogues), car vous n'avez généralement pas besoin de la plupart des fonctionnalités ou de la personnalisation. Par exemple, les gens utiliseront Joomla même si tout ce dont ils ont besoin est un simple "modèle de site de nouvelles" qui pourrait en pratique être réalisé avec quelques dizaines de lignes de code. Même si vous, en tant que programmeur, n'êtes pas deux fois moins performant que ceux qui travaillent sur un logiciel populaire (vous avez donc un nombre de bogues sensiblement plus élevé par ligne de code), vous pouvez souvent gagner avec une grande marge en raison de l'ordre de grandeur ( ou peu!) moins de code à écrire / maintenir