Gli attacchi di tipo injection permettono agli hacker di inficiare dati sensibili e causare diversi problemi come la divulgazione di tutti i dati personali o la distruzione degli stessi nonché la possibilità di diventare loro stessi amministratori del server.
Proviamo ad immaginare una query generata da una pagina di login;
SELECT * FROM users WHERE user_id = 'admin' AND password_id = 'pswd'Proviamo ora ad iniettare una stringa strutturata nel campo password;
SELECT * FROM users WHERE user_id = 'admin' AND password_id = 'anything' OR 'x'='x'Come è evidente l'operatore OR imporrà un uguaglianza e dato che è sempre verificata, otterremo l'accesso.
Altre stringhe che sarebbe utile provare per testare la sicurezza del nostro database ;) sono;
' or 1=1--
'" or 1=1--
' or 1=1 --
' or 0=0 #
'" or 0=0 --
or 0=0 --
' or 0=0 #
' or 'x'='x
or 1=1--
') or ('a'='aNon è sempre facile difendersi da un simile attacco perché firewall e strumenti analoghi forniscono protezione contro gli attacchi web su vasta scala, ma visto che il sito deve essere accessibile al pubblico, i sistemi di sicurezza consentiranno l'accesso.
Quello che un progettista o un amministratore può fare per prevenirsi questo tipo di intrusione, è di filtrare i caratteri prima di passarli ad DBMS. Alcuni di questi molto sensibili sono;
+ - ( ) = ; ' < >Nonché filtrare anche le parole riservate di sql in base alla proprie esigenze.
Nessun commento:
Posta un commento