Domanda interessante! Vorrei rispondere più dal punto di vista delle probabilità che dal punto di vista delle migliori prassi correnti.
Mentre Thomas e altri forniscono grandi risposte, non credo che tocchino la domanda principale - che è "è un codice unico (o meno usato) più resiliente nella pratica di un codice popolare". Nota che non ho deliberatamente usato "più sicuro di un codice popolare". E quello che si riduce a è un caso speciale di "sicurezza attraverso il lavoro di oscurità"?
E (e so che questa non sarà una risposta popolare) Penso che quando sostituiamo "sicuro" con "resiliente" la risposta potrebbe non essere sempre comunemente accettata "mai!"
È probabile che sia meno sicuro (nel senso che è molto probabile che il tuo codice di sicurezza sia più facile / veloce da decifrare rispetto a quello diffuso attraverso molti attacchi precedenti, e risolto da persone più intelligenti di te).
Tuttavia, a meno che tu non sia un sito grande / popolare, significa anche che sei molto meno interessante ai potenziali cracker se non riescono a riutilizzare il codice / l'impegno speso per screditarti, e tale sforzo non è -trivial (ovvero, il tuo sito non si scomporrà alle automatiche non-validation / sonde di SQL injection). Questo ovviamente non funziona se sei specificamente mirato (spionaggio industriale, ecc.), Ma la stragrande maggioranza degli attacchi in quei giorni sembra in realtà essere sonde automatizzate per software popolari.
Quindi, se la domanda non è "che è più sicuro", ma "che è meno probabile che venga violato", la risposta potrebbe effettivamente essere "dipende". Ecco alcuni esempi:
Esempio 1: Immagina Microsoft Windows 8.1 (o qualunque cosa sia popolare oggigiorno) computer, con attualmente non noti buchi di sicurezza, acquistati ma mai aggiornati, connessi a Internet. Immagina anche il vecchio Windows 3.11 con winsock, mai rattoppato, con centinaia di falle di sicurezza, collegate a Internet. Entrambi sono usati nello stesso modo. Ignora a fini di discussione la qualità dell'accesso ... La domanda è, che sarà interrotta prima?
Mentre è ovvio che 3.11 è molto meno sicuro, non ci sono praticamente exploit in circolazione che lo bersagliano. Quindi potrebbe essere che ci sarebbe un exploit di 0-giorni massicciamente popolare per 8.1 che lo colpisse, prima che il 3.11 colpisca qualche exploit arcaico che riesca a farcela.
Esempio 2: Immagina di avere l'ultimo CMS Joomla su un server web senza exploit correnti noti e script perl fatti a mano che fanno cose CMS-ish, con noti bug sfruttabili (ma nessuno di essi sospetto ai test automatici attualmente disponibili). Dopo un anno, che ha maggiori possibilità di essere sfruttato?
Mentre prove aneddotiche, in alcune dozzine (fino a centinaia) di casi che ho avuto negli ultimi decenni, è stato nella grande maggioranza dei casi che il software popolare è stato sfruttato, mentre quelli obsoleti continuano a funzionare fino ad oggi indisturbati.
Un'altra cosa da prendere in considerazione:
- se il software più popolare esegue l'aggiornamento automatico (o ha sempre l'amministratore che lo aggiorna SEMPRE), allora i punti deboli di tale codice popolare sono molto ridotti (ma non eliminati, a causa di exploit di 0 giorni e non pubblicati) e quindi hanno un grande vantaggio
- al contrario, se il software non riceverà alcuna manutenzione, non popolare (come quello auto-scritto) uno potrebbe effettivamente essere meno sospetto di problemi
- colpa - potrebbe spesso essere vantaggioso utilizzare un software popolare. Se metà del mondo è colpita, non avrai la stessa colpa come se fossi un singolo programmatore su di esso. Questo è particolarmente importante se si lavora con denaro. Spesso è "meglio" essere meno sicuri, ma essere in grado di spostare la colpa, piuttosto che essere più sicuri, ma dover sostenere i costi da soli quando l'exploit colpisce.
- lavoro - già menzionato da altri, un software popolare nella maggior parte dei casi si risolve da solo, è sufficiente aggiornarlo - il che è molto meno lavoro di quello di trovare e correggere bug (ma richiede ancora alcuni manutenzione)
- un altro vantaggio per il software auto-scritto è spesso la riduzione del codice di massa (che porta a meno bug), dato che di solito non è necessaria la maggior parte delle funzionalità o personalizzazione. Ad esempio, le persone useranno Joomla anche se tutto ciò di cui hanno bisogno è un semplice "sito di notizie template" che potrebbe in pratica essere realizzato con poche dozzine di righe di codice. Anche se voi come programmatori non siete bravi a metà di quelli esperti che lavorano su un software popolare (quindi avete un numero notevolmente maggiore di bug per riga di codice), spesso potete vincere ancora con un ampio margine dovuto all'ordine di grandezza ( o pochi!) meno codice da scrivere / mantenere