Pregunta interesante! Me gustaría responderlo más desde el punto de vista de probabilidad, que desde el punto de vista de Mejores prácticas actuales.
Si bien Thomas y otros brindan excelentes respuestas, no creo que toquen la pregunta central, que es "es un código único (o menos usado) más resistente en la práctica que el código popular". Tenga en cuenta que deliberadamente no he usado "más seguro que el código popular". ¿Y a qué se reduce eso es el caso especial de "la seguridad a través de la oscuridad funciona"?
Y (y sé que esta no va a ser una respuesta popular) Creo que cuando reemplazamos "seguro" por "resiliente", es posible que la respuesta no siempre sea comúnmente aceptada "¡nunca!"
Es probable que sea menos seguro (lo que significa que es muy probable que su propio código de seguridad sea más fácil / más rápido de descifrar que el popular, que ya había sufrido muchos ataques antes y fue corregido por personas más inteligentes que tú).
Sin embargo, a menos que usted sea un sitio grande / popular, también se destaca que es mucho menos interesante para los posibles crackers si no pueden reutilizar el código / esfuerzo empleado en descifrarlo, y ese esfuerzo no es -trivial (lo que significa que su sitio no se descompondrá en la no validación del parámetro automatizado / sondas de inyección de SQL). Obviamente, esto no funciona si está dirigido específicamente (espionaje industrial, etc.), pero la gran mayoría de los ataques en esos días parecen ser sondas automatizadas para software popular.
Entonces, si la pregunta no es "cuál es más segura", sino "que es menos probable que se resuelva", la respuesta podría ser "depende". Aquí hay algunos ejemplos:
Ejemplo 1: Imagine una computadora con Microsoft Windows 8.1 (o lo que es popular en estos días), actualmente sin agujeros de seguridad conocidos, comprados pero nunca actualizados, conectados a Internet. También imagine décadas de Windows 3.11 con winsock, nunca parchadas, con cientos de agujeros de seguridad conocidos, conectados a Internet. Ambos se utilizan de la misma manera. Ignorar con el propósito de discutir la calidad del acceso ... La pregunta es, ¿cuál será interrumpida antes?
Si bien es obvio que 3.11 es mucho menos seguro, casi no hay ninguna vulnerabilidad en la naturaleza que lo apunte. Por lo tanto, bien podría ser que hubiera un exploit masivamente popular de 0 días para que 8.1 lo golpeara, antes de que el 3.11 alcance un exploit arcaico que se ejecute en él.
Ejemplo 2: imagina que tienes el último CMS de Joomla en un servidor web sin explotaciones actuales conocidas, y un script perl hecho a mano que hace cosas de CMS, con errores explotables conocidos (pero ninguno de ellos sospechoso de pruebas automatizadas actualmente disponibles). Después de un año, ¿cuál tiene mayores posibilidades de ser explotado?
Aunque hay evidencia anecdótica, en pocas docenas (a cientos) de casos que he tenido en décadas pasadas, fue en la mayoría de los casos que se explotó el software popular, mientras que los obsoletos continúan funcionando hasta el día de hoy sin problemas.
Otras cosas que vale la pena considerar:
- si el software popular se actualiza automáticamente (o tiene administradores SIEMPRE actualizándolo rápidamente), entonces las debilidades de dicho código popular se reducen mucho (pero no se eliminan, debido a vulnerabilidades de 0 días y no publicadas) y, por lo tanto, tienen una gran ventaja
- a la inversa, si el software no va a recibir mantenimiento, uno no popular (como uno mismo) es realmente menos sospechoso de problemas
- culpa: a menudo puede ser ventajoso usar software popular. Si la mitad del mundo está afectada, no tendrás tanta culpa como si fueras un programador único. Esto es especialmente importante si se trabaja con dinero. A menudo es "mejor" estar menos seguro pero ser capaz de cambiar la culpa, que estar más seguro pero tener que pagar el costo cuando el exploit golpea.
- trabajo: ya mencionado por otros, el software popular en la mayoría de los casos se solucionará solo, solo necesita actualizarlo, que es mucho menos trabajo que encontrarlo y corregir errores (pero aún requiere algunos mantenimiento)
- otra ventaja para el software de auto-escritura es a menudo la reducción de código masivo (lo que lleva a menos errores), ya que generalmente no necesita la mayoría de las funciones o personalización. Por ejemplo, la gente usará Joomla incluso si todo lo que necesitan es un simple "sitio de noticias de plantilla" que en la práctica podría lograrse con pocas docenas de líneas de código. Incluso si usted como programador no es la mitad de bueno que los que trabajan en un software popular (por lo que tiene un número notablemente mayor de errores por línea de código), a menudo aún puede ganar por un gran margen debido a su orden de magnitud ( o pocos!) menos código para escribir / mantener