Junior — Middle
Koje vrste zahteva smatrate najsigurnijim i zašto?
sobes.tech АИ
Одговор од АИ
Најбезбедније су параметризоване (prepared) упите и ORM упити, који аутоматски ескейпирају улазне податке.
Разлог је што спречавају SQL инјекције — када нападач убацује злонамерни SQL код преко корисничког улаза.
Пример:
-
У параметризованом упиту, параметри се преносе одвојено од SQL кода, што искључује могућност промене структуре упита.
-
За разлику од конкатенације стрингова, где се кориснички улаз директно убацује у упит.
На пример, у Јави са JDBC-јем:
String sql = "SELECT * FROM users WHERE username = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, userInput);
ResultSet rs = ps.executeQuery();
Овај приступ је безбеднији од:
String sql = "SELECT * FROM users WHERE username = '" + userInput + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);
Због тога се за безбедност током тестирања и развоја препоручује коришћење параметризованих упита.