Questa guida nasce con lo postato il 04/12/2006 10:14:20 nel forum programmazione, gdrcd e open source
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 12:08:32
beh una domandina sto da qualche tempo leggendo qualcosa sull'argomento .... e volevo sapare ...
ok con un get si mostrano le variabili che vengono inviate lasciando intuire che tipo d query possa essere eseguita in base ala pagina in cui viene fatta ...
uno potrebbe , con cattive intenzioni, creare un sql injection ...
ma non potrebbe dalla paginma in questione perche' la barra di navigazione e' disattivata ...
in questo caso se apre altra finestra brower e invia la riga sql non basta un controllo sulla sessione per evitare che questo tipo di attacco non giunta a buon fine ?
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 14:30:57
certo ho notato anche io che appare la barra di navigazionje come dici tu ma come hai affermato si puo' eliminare il problema con javascript ... inoltre ho fatto qualche test e
associando un controllo session/privilegi su ogni azione di interazione col db .. (a meno che uno non riesca a carpire la struttura del database ...) e' difficile che riesca fare qualcosa ... ma ne so poco ditmei voi ...
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 09:42:42
eheh bella trovata eheh ma e' anche vero che 9 comunita' su 10 usano tool precotti e qundi uno che li conosce puo' fare ogni sorta di attacco ad hoc questo rende le cose piu' facili rispetto a codice creato da zero ...
comunque ... usato javascript per evitare GET intanto erano tanti ora ma vabbe' non si sa mai ... :P
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€
05/12/2006 11:27:44
eh vero quello che dici ehhe
molte aziende grosse lo usano ....
per ora comunque ho risolto cosi' ehhe magari quando updatero' la versione nel caso mai finissi la prima non ho tempo per andare avanti -_- vabbe' ... comunque grazie!!!
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
sneezy_dwarfs ha recensito New Orleans
✋😟
Abbiamo rilevato che stai usando un software per bloccare la pubblicità!
L'utilizzo di GDR-online.com è gratuito da oltre 18 anni ma è necessario coprire i costi per mantenerlo online... ti chiediamo di aiutarci disabilitando il blocco dei banner pubblicitari.
Togliere il blocco significa fare in modo che GDR-online.com possa continuare a far conoscere piccoli giochi amatoriali gratuitamente e offrire un servizio sempre migliore e adatto alle esigenze dei suoi giocatori!
Se questo avviso continua ad apparire nonostante tu abbia autorizzato il portale:
- Verifica nelle opzioni che venga disattivato AdBlock in tutto il dominio gdr-online.com e non solo in una pagina
- Controlla di non avere fra le estensioni installate altre analoghe ad AdBlock, come AdBlock Plusbr, ublock origin, ecc.
- Probabilmente sul tuo PC è installato un Antivirus che ha anche funzioni di blocco pubblicità
- Se usi Firefox impostare il "Blocco Contenuti" su "Normale" e non su "Restrittivo". Per farlo clicca sull'icona dello scudo vicino all'URL e clicca su "Disattiva Blocco per questo sito"
- Prova a premere CTRL + F5, riloggarti e vedi se il problema persiste