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

الحقن إلى ما هو أبعد من SQL

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

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

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

في هذا الدرس

stop untrusted input from being run as code or queries.

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

  • Injection: input is glued into a command so that data becomes code.
  • SQL and JPQL: never concatenate input into a query; use parameters (:name, ?).
  • Other targets: OS commands, LDAP, expression languages, log lines (log injection with newlines).
  • Validation helps, but parameterization is the real fix.
  • Sorting column names and similar cannot be parameters: check them against an allow-list.
تفاصيل المخطط المبدئي

عرض عملي

java
// Vulnerable
em.createQuery("select p from Product p where p.name = '" + name + "'");
// Safe
em.createQuery("select p from Product p where p.name = :name").setParameter("name", name);

اختبر فهمك

What stops SQL injection reliably?

أظهر الإجابة

Parameterized queries.

التطبيق

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

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

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

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