Svi znaju da je s napretkom tehnologije sigurnost osnovna i važna značajka za svako poslovanje i platformu društvenih medija. Gotovo svaka tvrtka prenosi svoje poslovne podatke, te podatke pohranjuje u bazama podataka. Dakle, SQL nudi tehnike za spremanje vaših podataka od hakera. Pomoću različitih tehnika možemo spriječiti hakere u podacima naše web stranice. Slično, SQL injekcija je tehnika hakiranja. Hakeri mogu pristupiti vašim podacima, također mogu srušiti vaše poslužitelje ubacivanjem nekog koda u vaše baze podataka. Ova metoda je izvediva zbog nepravilnog kodiranja nagnutih web paketa. Neki novi programeri ne provjeravaju prazninu podatkovnog polja i prazno polje su uzrok SQL injekcije.
Ovaj pristup sastoji se od upotrebe pripremljenih izjava s upitnikom (?) u našim upitima svaki put kada trebamo umetnuti naknadu koju daje potrošač. Ovo je vrlo učinkovito i, osim ako nema crva unutar implementacije JDBC pokretačke snage, imuno na eksploatacije.
Jednostavan primjer koda za ovu tehniku je:
javni popis safeFindAccountsByCustomerId( String customerId)
baca iznimku {
String sql = ‘ odaberite ‘ + ‘ customer_id, acc_number, branch_id, stanje s Računa ‘ + ‘ gdje je customer_id = ? ' ;
Veza c = dataSource.getConnection() ;
PreparedStatement p = c.prepareStatement( sql ) ;
p.setString(1, customerId);
Skup rezultata rs = p.executeQuery(sql));
// izostavljeno – obraditi retke i vratiti popis računa
}
U gore navedenom kodu metoda readyStatement() dostupna je u primjeru veze za dobivanje PreparedStatementa. To nam omogućuje da ispravno umetnemo vrijednosti koje je dala osoba u pitanje prije nego što ga izvršimo.
Koristite PDO i pripremljene upite.
($conn je PDO objekt)
$stmt = $conn -> pripremiti (‘ INSERT INTO tbl VRIJEDNOSTI ( :Id , :name ) ‘ ) ;
$stmt -> bindValue ( ‘ :id ‘, $id ) ;
$stmt -> bindValue(‘ :name ‘ , $name ) ;
$stmt -> izvršiti();
Pripremljeni izrazi otporni su na SQL injekciju, zbog činjenice da se vrijednosti parametara, koje se kasnije prenose korištenjem jedinstvenog protokola, sada ne moraju uspješno izbjeći. Ako izvorni predložak deklaracije nije izveden iz vanjskog unosa, SQL injekcija se ne može pojaviti.
Mnogi razvojni timovi odlučuju koristiti okvire za relacijsko preslikavanje objekata (ORM) kako bi prijevod jedinica SQL rezultata u objekte koda učinili izuzetno besprijekornim. ORM alati često sugeriraju da programeri rijetko trebaju pisati SQL izraze svog koda – a ti alati rado koriste parametrizirane izjave ispod haube.
def trenutni_korisnik(e-pošta)
# Objekt 'Korisnik' je objekt aktivnog zapisa koji mora pronaći metode
# automatski generira Rails.
User.find_by_e-mail (e-pošta)
Kraj
Gornji kod će vas spasiti od SQL injekcija ili hakerskih napada.
Još jedna jednostavna metoda za sprječavanje ubrizgavanja vaše SQL baze podataka je šifrirana baza podataka ili podaci. Stoga obično spremite vjerodajnice svoje baze podataka u zasebno izvješće i šifrirajte ga na siguran način kako biste osigurali da napadači ne mogu imati mnogo koristi.