طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 243 · أمن الويب
تقييم الدرس 9

الاستعلامات المعلَّمة

أجب عن الأسئلة ثم اضغط «صحّح ورقتي» في آخر الصفحة. ← العودة إلى الدرس

أسئلة التقييم

تقييم الدرس 9: الاستعلامات المعلَّمة. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) علامات ? في الاستعلام تُعلّم:
2) لماذا لا يُكسر هذا الخادم بترتيب خبيث؟
const express = require('express');const app = express();app.use(express.json());app.use(express.urlencoded({ extended: false })); const sqlite3 = require('sqlite3');const db = new sqlite3.Database(':memory:');db.serialize(() => {  db.run(`CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, pass TEXT, role TEXT, email TEXT)`);  db.run(`INSERT INTO users (name, pass, role, email) VALUES    ('سارة', 's@rah123', 'customer', 'sara@mail.sa'),    ('خالد', 'kh@led456', 'customer', 'khaled@mail.sa'),    ('المدير', 'Adm!n#2025', 'admin', 'admin@mail.sa')`);  db.run(`CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT, price INTEGER)`);  db.run(`INSERT INTO products (name, price) VALUES    ('سماعة', 120), ('لوحة مفاتيح', 90), ('كاميرا ويب', 210)`);}); app.get('/products', (req, res) => {  // ✓ اسم العمود لا يُعلَّم؛ يُختار من قائمة مسموحة  const allowed = { price: 'price', name: 'name' };  const col = allowed[req.query.sort] || 'id';  const dir = req.query.dir === 'desc' ? 'DESC' : 'ASC';  db.all(`SELECT id, name, price FROM products ORDER BY ${col} ${dir}`, [], (e, rows) => res.json(rows));}); app.listen(3000);
3) تأمين عمود الترتيب الديناميكي:
4) الاستعلام الخام في ORM:
5) حتى المعرّف في /products/:id:

2السؤال الثاني: صح أم خطأ

1) التعليم يلزم في عمليات الإدراج والتعديل كما القراءة.
الصواب: صح
2) يمكن تعليم اسم الجدول بعلامة ?.
الصواب: خطأ
3) قائمة المسموح تؤمّن عمود الترتيب الديناميكي.
الصواب: صح
4) ORM يلغي الحاجة إلى التفكير الأمني كليًّا.
الصواب: خطأ
5) المعرّف في الرابط مدخل من المستخدم.
الصواب: صح

3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة

1) ما لا يُعلَّم (اسم عمود، ترتيب) يُختار من قائمة .
الإجابة: مسموحة
2) أطر مثل Sequelize تُسمّى .
الإجابة: ORM
3) القيم في الاستعلام المعلَّم تُمرَّر في .
الإجابة: مصفوفة منفصلة

4السؤال الرابع: أسئلة عملية

1) ORDER BY يمكن تأمينه بقائمة مسموحة لأن اسم العمود لا يُعلَّم.
الصواب: صح
2) db.get("… id = " + req.params.id) استعلام آمن.
الصواب: خطأ
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس