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

Затова за безопасност при тестове и разработка се препоръчва използването на параметризирани заявки.