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);
ამიტომ, უსაფრთხოებისთვის, ტესტირების და განვითარების დროს, რეკომენდებულია გამოყენება პარამეტრიზებული შეკითხვები.