Junior — Middle
Кои типове заявки считате за най-безопасни и защо?
sobes.tech AI
Отговор от AI
Най-безопасните са параметризирани (prepared) заявки и ORM заявки, които автоматично ескейпват входните данни.
Причината е, че те предотвратяват SQL инжекции — когато злонамерен атакуващ вмъква вредоносен SQL код чрез потребителския вход.
Пример:
-
В параметризирана заявка, параметрите се предават отделно от SQL кода, което изключва възможността за промяна на структурата на заявката.
-
За разлика от конкатенацията на низове, където входът на потребителя се вмъква директно в заявката.
Например, в Java с 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);
Затова за безопасност при тестове и разработка се препоръчва използването на параметризирани заявки.