Sobes.tech
Junior — Middle

Kādus pieprasījumu tipus uzskatāt par drošākajiem un kāpēc?

sobes.tech AI

Atbilde no AI

Visdrošākās ir parametrizētās (prepared) vaicājumi un ORM vaicājumi, kas automātiski izsmej ievades datus.

Iemesls ir tas, ka tie novērš SQL injekcijas — kad uzbrucējs ievieto ļaunprātīgu SQL kodu caur lietotāja ievadi.

Piemērs:

  • Parametrizētā vaicājumā parametri tiek nodoti atsevišķi no SQL koda, kas izslēdz iespēju mainīt vaicājuma struktūru.

  • Atšķirībā no virkņu savienošanas, kur lietotāja ievade tiek tieši ievietota vaicājumā.

Piemērs Java ar JDBC:

String sql = "SELECT * FROM users WHERE username = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, userInput);
ResultSet rs = ps.executeQuery();

Šī pieeja ir drošāka nekā:

String sql = "SELECT * FROM users WHERE username = '" + userInput + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);

Tādēļ drošības nolūkos testēšanā un izstrādē ieteicams izmantot parametrizētus vaicājumus.