انتقل إلى المحتوى
أمين أبوزيد
درس مخطط لهJNR-025-L04

SQL ديناميكي دون حقن

  • الدرس 4 من 5
  • Junior
في هذا الدرس 4 موضوعات

هذا الدرس مخطط له. يعرض المخطط أدناه الموضوعات التي سيغطيها، ولم يُنشر الدرس الكامل بعد.

نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.

في هذا الدرس

build queries from user input safely.

الموضوعات المخطط لها

  • SQL injection: user text becomes part of the SQL command and changes its meaning.
  • Values always go through ? placeholders (PreparedStatement); the database never treats them as SQL.
  • Placeholders cannot be used for column names or ASC/DESC.
  • For a user-chosen sort column, use an allow-list (a fixed map from public names to real column names).
  • Unknown value: reject it or fall back to a default; never paste it in.
تفاصيل المخطط المبدئي

عرض عملي

java
private static final Map<String, String> SORTABLE = Map.of("name", "name", "price", "price");

String col = SORTABLE.getOrDefault(sortParam, "name");
String dir = "desc".equalsIgnoreCase(dirParam) ? "desc" : "asc";
String sql = "select id, name, price from product order by " + col + " " + dir;

اختبر فهمك

Can you pass a column name as a ? parameter?

أظهر الإجابة

No; use an allow-list.

التطبيق

طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.

المختبر والتمارين الاختبار

تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.

اكتب للبحث في المستويات والمراحل والوحدات والدروس.