Junior — Middle
Milliseid päringutüüpe pead kõige turvalisemaks ja miks?
sobes.tech AI
Vastus AI-lt
Kõige turvalisemad on parameetritud (prepared) päringud ja ORM päringud, mis automaatselt eraldavad sisendandmed.
Põhjus on selles, et need ennetavad SQL-injektsioone — kui ründaja sisestab kahjulikku SQL-koodi kasutaja sisendi kaudu.
Näide:
-
Parameetritud päringus edastatakse parameetrid eraldi SQL-koodist, mis välistab päringu struktuuri muutmise võimaluse.
-
Erinevalt stringide ühendamisest, kus kasutaja sisend sisestatakse otse päringusse.
Näide Java JDBC-ga:
String sql = "SELECT * FROM users WHERE username = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, userInput);
ResultSet rs = ps.executeQuery();
See lähenemine on turvalisem kui:
String sql = "SELECT * FROM users WHERE username = '" + userInput + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);
Seetõttu on testimise ja arendamise ajal soovitatav kasutada parameetritud päringuid turvalisuse tagamiseks.