Domanda

perl -T

Non si usa? Non ti aiuto per trovare falle di sicurezza nei propri script Perl?

È stato utile?

Soluzione

Più di questo :) è si ferma i tuoi problemi di sicurezza prima che diventino uno. Non è una pallottola d'argento di sicurezza, naturalmente ... abbiamo usato per usarlo (a pochi anni fa, quando sono stato coinvolto in progetti Perl) in qualsiasi script che è stato esposto esternamente (cioè qualsiasi applicazione mod_perl) e l'abbiamo trovato molto utile e fatto la nostra politica. Lo fa alcuni controlli ed è a portata di mano .. (qualsiasi cosa rende le cose automatizzati)

Perl Sicurezza - perlsec lo raccomanda vivamente di troppo:

  

Questa bandiera [modalità Taint] è fortemente consigliato per programmi server e qualsiasi programma eseguito per conto di qualcun altro, come ad esempio uno script CGI. Una volta che la modalità contaminazione è su, è su per il resto dello script.

Altri suggerimenti

La maggior parte sicuramente!

$ echo '`rm -rf /`' | perl -Te 'eval while <>'
Insecure dependency in eval while running with -T switch at -e line 1, <> line 1.

Il capitolo "Tecniche di programmazione sicura" di Mastering Perl è quasi completamente dedicato a contaminare il controllo e come si dovrebbe utilizzare esso.

Molte persone vi diranno che ti protegge, ma sottilmente mentire su questo. Si tratta di uno strumento di sviluppo che aiuta a trovare alcuni (solo alcuni) punti nel codice in cui è necessario stare attenti. Non sta andando a risolvere tutti i vostri problemi di sicurezza.

Credo che la modalità macchia avrebbe funzionato meglio quando il nuovo codice è in fase di sviluppo che tutti sono a conoscenza.

Se si dispone di qualcun altro codice che viene scritto male, e lo si esegue nella modalità Taint - perl morirà piuttosto che eseguire ciò che le regole sporcando sono operazioni non sicure ''.

Nella schermata macchia perl alcune buche sono rattoppate ma non tutti. Sistema ( "$ unfiltered_user_input") morirà, ma Perl potrebbe ancora scrivere $ unfiltered_user_input dati in un file con un nome fisso (perché la stampa di dati contaminato è considerato 'sicuro') e quindi eseguire il file con il sistema (). Ma niente può controllare tutto.

C'è un compromesso lì per il suo utilizzo in applicazioni legacy. Quando si trova un Perl funzionamenti nocivi sui dati alterati morirà - il che significa che qualcuno deve andare a decidere che cosa significhi untaint i dati, cosa regexp sono necessari, prima che l'applicazione sarà di nuovo affidabile.

Alcune persone preferiscono insicura, affidabile, a basso costo (per ora) a - sicura, rotto, hanno bisogno di trovare gli sviluppatori. Non che thats bene a lungo termine ... ma non è insolito.

Sì, la modalità contaminazione è utile per tutti i motivi di cui sopra.

Un posto che non si può prendere in considerazione i dati grezzo sia quando si interagisce con un database. Fortunatamente, DBI ha il supporto per l'arresto di dati alterati da entrare nel database, e si tratta di dati provenienti dal database come venga intaccata in modo che non si può fare nulla pericoloso con esso. Devi girare in particolare sulle opzioni per questo; sono fuori per impostazione predefinita. Vedere la documentazione DBI di più.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top