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);

ამიტომ, უსაფრთხოებისთვის, ტესტირების და განვითარების დროს, რეკომენდებულია გამოყენება პარამეტრიზებული შეკითხვები.