Sobes.tech
Junior — Middle

Milyen kérés típusokat tartasz a legbiztonságosabbnak és miért?

sobes.tech MI

Válasz az MI-től

A legbiztonságosabbak a paraméterezett (prepared) lekérdezések és az ORM-lekérdezések, amelyek automatikusan escape-elik a bemeneti adatokat.

Az ok, hogy megelőzik az SQL-injektálásokat — amikor a támadó rosszindulatú SQL-kódot illeszt be a felhasználói bemeneten keresztül.

Példa:

  • Egy paraméterezett lekérdezésben a paramétereket külön adják át az SQL-kódhoz, így kizárva a lekérdezés szerkezetének módosítását.

  • Ellentétben a string összefűzéssel, ahol a felhasználói bemenet közvetlenül kerül beillesztésre a lekérdezésbe.

Például Java JDBC-vel:

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

Ez a módszer biztonságosabb, mint:

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

Ezért biztonságosabb a teszteléshez és fejlesztéshez a paraméterezett lekérdezések használata.