2009-08-25 24 views

risposta

5

This domanda è ben risposto, e copre attacchi di iniezione di MySQL (una delle preoccupazioni più comuni. This questione è anche ben documentato e copre XSS (Cross Site Scripting) attacchi bene.

Infine, scopri PHP.INI e come impostarlo e cosa è effettivamente aperto/chiuso e acceso/spento. Un buon host, ad esempio, non accenderà mai i globali dei registri, ma dovresti almeno sapere di cosa si tratta e perché controllarlo PHP Security ha risorse su questo e molti altri problemi di sicurezza di PHP

1

PHP potrebbe non essere il migliore inizio. Soprattutto se stai facendo girare a mano il tuo codice. Non tiene esattamente la mano con problemi di sicurezza. (Fd: Vorrei che PHP sarebbe andato via per una serie di motivi.)

Ma alcune regole generali:

  • non mi fido di tutto ciò che viene dall'esterno. Assumi sempre che l'utente è un cretino che tenta di interrompere la tua app. Molti di loro non lo saranno, certo, ma alla fine ce ne sarà uno che lo è. Solo perché hai dato al browser uno <select> contenente a, b e c non significa che ne riceverai uno indietro. Javascript non è una garanzia di nulla. I referenti possono essere facilmente falsificati. I dati POST possono essere facilmente falsificati. Le caselle di testo possono contenere qualsiasi carattere, non solo quelli che ti aspetti.
  • Non copiare e incollare il codice di altri in produzione se non si è sicuri di come funziona. Non hai idea di quanta attenzione ha l'autore per la sicurezza. Nella mia esperienza, il copypasta PHP in particolare sembra essere meno affidabile ma più spesso riutilizzato ciecamente.
  • Non fidarti di te stesso per eseguire lo stesso rituale in dozzine di luoghi diversi. Sì, mysql_real_escape_string() risolverà l'iniezione SQL, ma poi devi ricordarti di usarlo ovunque. Questo crea un sacco di posti in cui potresti commettere un errore e dimenticare il tuo rituale di fuga. Utilizzare invece istruzioni preparate e il problema scompare interamente. Un altro esempio: Pylons (un framework Python) installa i suoi template in modo tale che ogni variabile sia in HTML-escape a meno che tu non chieda esplicitamente altrimenti. XSS non è più un problema e non devo mai preoccuparmi di eseguire manualmente l'escape di tutto ciò che stampo.
1

Se avete un po 'di tempo, si potrebbe dare un'occhiata alle slide utilizzate da Stefan Esser durante la sua conference at the Dutch PHP Conference a pochi mesi fa, che titolo era "Crash Course PHP Security per principianti".

ci sono un paio di PDF:

Questi potrebbero essere utili.

Quindi, non esitate a cercare un po 'per informazioni specifiche non PHP: alcuni problemi di sicurezza (come XSS, SQL Injections, CSRF, ...) non sono specifici per PHP: solo i mezzi tecnici per evitare loro sono specifici; quindi, potresti trovare molte informazioni su siti come Wikipedia o OWASP website

Problemi correlati