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.