Questa guida nasce con lo postato il 04/12/2006 10:14:20 nel forum programmazione, gdrcd, open source, hosting
Questa guida nasce con lo scopo di rivelare ai programmatori come possono proteggere le land che programmano..
La guida ovviamente si basa sulla mie esperienze e conoscenze e pertanto potrebbe risultare non completa.
SQL injection
In cosa consiste??
La SQL injection è in pratica un inizeione di codice SQL dannosso attraverso un campo testo non opportunamente controllato (sia textarea o input box o barra degli indirizzi).
Come proteggersi?
Come prima cosa il mio consiglio è di usare il meno possibile il metodo get che mostra i nomi delle variabili e il loro contenuto nella barra degli indirizzi.
Usando il metodo post i dati sono leggeremtni più al sicuro perchè non in vista.
Un altro metodo elementare per proteggersi dalla sql injection è quella di non aquisire gli apici singoli come tali.
Gli apici singoli (') bloccherebbero l esecuzione della query facendo tornare errore e cosi si potrebbe capire la struttura del db.
Per questo consiglio di usare l htmlspecialchars che converte l' apice singolo nel suo codice html (ossia & #0039; senza spazi ).
Un' altra cosa che si potrebbe evitare sono due caratteri meno attaccati (--) che in SQL equivale ad un commento.
Perchè permettendo questi un utente che ha intenzione di fare danno potrebbe inserirli in modo da commentare quello che viene dopo e stoppare cosi la query dove vuole
Non sto a dire il resto perchè potrebbe essere usato contro di voi...
Quidni mi raccomando almeno usate l htmlspecialchars almeno e il più possibile il metodo post..
HTML injection
L html di per se non è dannoso, in quanto è linguaggio di formattazione testo. Tuttavia può diventare dannoso quando se ne permettono tutti i tag. Ricordo che in html esiste il tag <??> che permette di inserire script in php che è molto + letale :D
Un altro tag dannoso è <script> che permette di inserire script in qualsiasi linguaggio..
Per proteggersi da quest ultimo usate la funzione striptags che rimuove tutti i tag html tranne quelli scelti da voi...
Conclusioni
Io ho detto metodi base per proteggersi ma quelli descritti da me non bastano minimamente se qualcuno è veramente intenzionato a fare danni. Vi ho solo descritto le minacce più comuni con le soluzioni più semplice, poi sta a voi ampliare il discorso.
Comunque una buona cosa sarebbe tenere delle copie di backup del database e dei file stessi aggiornate..
Pagine → 1
04/12/2006 11:39:02
Rispondiamo un po' al caro Alex. Di norma per prevenire l'inserimento di codice "insidioso" si dovrebbero conoscere che potrebbero danneggiare un DB. Un sito americano, di sicurezza, converte tutto il testo processato in ascii in modo che anche comandi come UPDATE o altro possano passare tranquilli. Il mio consiglio di base è farsi delle funzioni di replace ad hoc. Oltre alle classiche citate da Alex ci potrebbero essere anche () , [] e via dicendo. Non è essere maniaci ma un po' di sicurezza non guasta mai. State attenti sopratutto alle registrazioni (per i siti che non hanno registrazioni con punteggi consiglio l'insermento di un'immagine di controllo) e ai Login passo fondamentale.
Detto Questo Enjoy the Web
My 0,02€
04/12/2006 14:07:15
Una cosa carina da fare è fare delle pagine e far sembrare che passi le variabile in get mentre invece le passi in post.. :D
Quello disorienta parecchio :D
04/12/2006 16:12:40
Associando ad ogni azione nel db un controllo, in effetti si è abbastanza protetti dalla SQL injection ma non dall HTML injection..
Per la cronaca in 10 land che ho visitato 6 mi hanno permesso di sloggare un utente appena guardava la mia scheda :D
05/12/2006 11:15:24
Ehi Kinley vuoi una piccolo trick? :D Zio Mook aka The Php Rompi say:
Usa un encode! Sui Manuali della O'Really si è spesso discusso di questa evenienza, di passare valori con GET. Un tipico utilizzo è codificare (con una qualche cosa reversibile non tipo SHA o MD5) i dati e per poi verificarli (puoi anche usare MD5 e metterlo anche nel verifica).
Questo metodo a dispetto di quanto si possa vedere viene usato anche da grandi aziende, con linguaggi diversi da PHP. Tanto per farti un esempio molte aziende che forniscono servizi di WebMail Usano addirittura i GET per il Login!
Questo ci farà molto molto riflettere.
Ecco, sappiate comunque che non esiste la difesa perfetta. Esiste solo il modo di rendere le cose più difficili!
Enjoy it!
my 0,02€
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
Crossout: Rissa "Scontro a Fuoco"