Sobes.tech
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.