Security-by-design basato su un framework esistente o su un design personalizzato?

3

Personalmente faccio la maggior parte dello sviluppo in PHP (il linguaggio di programmazione non ha molta importanza per questa domanda). I framework PHP più popolari lungo gli sviluppatori sono ad esempio:

  1. CodeIgniter
  2. Laravel
  3. Symfony

Da questi tre framework, so di più su CodeIgniter e in generale penso che forniscano agli sviluppatori una buona libreria di input e presta maggiore attenzione alla sicurezza . Inoltre hanno un programma di sicurezza per consentire ai ricercatori di segnalare le vulnerabilità nel framework per correggerle. Disclaimer: sto anche contribuendo al framework CodeIgniter e al loro programma di sicurezza.

La mia domanda generale è: è meglio fare affidamento su un framework esistente per lo sviluppo di un'applicazione al fine di estendere una struttura base di sicurezza per progetto. O è più sicuro iniziare da zero e sviluppare tutto da solo?

In altre parole: con la sicurezza in base al design in mente, è più sicuro iniziare a sviluppare un'applicazione basata su un framework di applicazione esistente o iniziare da zero con un progetto di build personalizzato?

Per non parlare del fatto che gli sviluppatori, naturalmente, devono utilizzare correttamente le funzioni di framework per trarne vantaggio. Lo stesso vale per le funzioni / funzionalità di creazione personalizzate.

    
posta Bob Ortiz 03.08.2016 - 13:49
fonte

1 risposta

4

Se dovessi iniziare da zero un framework, dovresti catalogare e affrontare un'ampia gamma di vulnerabilità possibili: dall'integrazione dei servizi agli exploit cross-site, dall'autenticazione (e hashing, salting, recupero della password, possibilmente crittografia dei dati ) al controllo di accesso alle risorse.

Ciò che intendo sono, queste sono le cose che bisogno fare in astratto, prima di iniziare lo sviluppo. Quindi che ne dici di farli in astratto, e quindi applicarli a un framework esistente ?

Questo avrebbe diversi vantaggi:

  • base di sviluppatori più ampia. Con un numero di occhi sufficiente, la maggior parte dei bug sono superficiali (anche se eventi come la tempesta SSL hanno offuscato questo concetto).
  • già- (in gran parte) -codice del codice acquisito.
  • una struttura concreta e definita a cui applicare i vari concetti e problemi di sicurezza, cortocircuitando l'intero ciclo design-mock-build-test.
  • più grande creativo di base - per quanto tu possa essere brillante, tu e gli altri penserai sempre a più possibilità di te. Quando si fa la lista di cose da fare e da guardare, questo sarà un aiuto inestimabile.
  • il resto del codice è già lì - ti sei concentrato sulla sicurezza, ma il resto delle funzionalità e funzionalità sono già state sviluppate.
  • Inoltre, il resto del codice probabilmente fornirà alcuni requisiti solo per essere lì - cose che il framework deve essere in grado di fare. E se avessi progettato uno splendido sistema ben protetto che in seguito si è rivelato incapace (o in grado solo con grande difficoltà e patching) di eseguire alcune funzionalità chiave che all'inizio erano state trascurate?

Tu fai hai lo svantaggio di non essere in grado di progettare l'intero framework da zero, il che potrebbe generare alcuni problemi.

Ma almeno per iniziare, inizierei con un esame approfondito dell'approccio alla sicurezza in un framework esistente. E ottieni molto buon karma con i ragazzi della struttura scelta; dal punto di vista della carriera, è molto più probabile che incontri un potenziale datore di lavoro che richiede esperienza con un framework noto.

    
risposta data 03.08.2016 - 14:45
fonte

Leggi altre domande sui tag