Concours de recrutement d'administrateur 3e grade - Université Cadi Ayyad (Marrakech) - Spécialité informatique - Épreuve de spécialité - Session du 05/11/2023
المباريات والتوظيف
متصرف من الدرجة الثالثة - المعلوميات دورة 2023
نص الموضوع
### Université Cadi Ayyad — Marrakech — La Présidence
## Concours de recrutement d'Administrateur 3ème grade
**Spécialité :** Informatique — **Épreuve de spécialité** — **Durée :** 3 heures — **Session du 05/11/2023**
---
## Ex1 (Obligatoire)
Nous souhaitons mettre en place une application Web pour la gestion des étudiants. En utilisant le langage de programmation et le Framework MVC de votre choix, veuillez répondre aux questions qui suivent :
**Questions sur le paramétrage et l'initialisation de l'application :**
- 1.a) Quels sont les fichiers de configuration principaux utilisés dans un Framework web MVC pour paramétrer une application ?
- 1.b) Expliquez brièvement le processus d'initialisation d'une application basée sur le modèle MVC.
**Questions sur la couche modèle :**
- 2.a) Qu'est-ce que la couche modèle dans un Framework web MVC ?
- 2.b) Quel est le rôle principal de la couche modèle dans le développement d'une application web ?
- 2.c) Donnez un exemple concret de l'utilisation de la couche modèle dans un scénario d'application.
**Questions sur la couche contrôleur :**
- 3.a) Qu'est-ce que la couche contrôleur dans un Framework web MVC ?
- 3.b) Quel est le rôle principal de la couche contrôleur dans le développement d'une application web ?
- 3.c) Comment la couche contrôleur interagit-elle avec la couche modèle et la couche vue ? Donnez un exemple de code.
**Questions sur la vue :**
- 4.a) Qu'est-ce que la vue dans un Framework web MVC ?
- 4.b) Quel est le rôle principal de la vue dans le développement d'une application web ?
- 4.c) Comment la vue obtient-elle les données nécessaires pour être affichées à l'utilisateur ?
**Question sur le code source d'une vue :**
- 5.a) Donnez un exemple de code source d'une vue dans un Framework web MVC qui affiche un tableau d'objets d'une classe quelconque reçu à partir d'un contrôleur.
- 5.b) Expliquez brièvement chaque partie du code source et son rôle dans l'affichage du tableau.
**Question sur la sécurité de l'application :**
- 5.a) Quelles sont les meilleures pratiques pour sécuriser une application basée sur un framework web MVC ?
- 5.b) Citez quelques techniques couramment utilisées pour protéger une application contre les attaques courantes, telles que les injections SQL et les attaques de cross-site scripting (XSS).
## Ex2
- a) Qu'est-ce qu'une attaque par déni de service (DDoS) et quelles mesures peut-on prendre pour atténuer ses effets ?
- b) Expliquez le concept de virtualisation et comment elle peut être utilisée pour optimiser les ressources informatiques.
- c) Qu'est-ce qu'un VPN (Virtual Private Network) et à quoi sert-il ?
## Ex3
- a) Quelles sont les pratiques recommandées lors de l'utilisation de GitHub pour la collaboration sur un projet ?
- b) Pouvez-vous expliquer ce qu'est l'architecture REST (Representational State Transfer) et comment elle est utilisée dans le développement d'API web ?
## Ex4. Maintenance informatique
- a) Qu'est-ce que la maintenance préventive et quel est son objectif principal ?
- b) Qu'est-ce qu'un plan de maintenance et quelles sont les informations clés qu'il doit contenir ?
الحل المقترح والتعليل
⚠️ تنبيه: هذا الحل مولَّد بالذكاء الاصطناعي. قد يحتوي على أخطاء في الحساب أو الاستدلال. في حالة الشك، تحقّق من الدروس والمراجع المقترحة أدناه أو من أستاذك. لا تتحمل المنصة أي مسؤولية عن الأخطاء المحتملة، والحل مقترح للمراجعة والتعلّم فقط وليس تصحيحاً رسمياً.
ننصحك بمحاولة الحل بنفسك أولاً قبل قراءة الحل.
> Corrigé proposé pour la révision (framework choisi : **Laravel / PHP** ; les réponses se transposent à Symfony, Spring MVC ou ASP.NET MVC).
## Ex1
**1.a) Fichiers de configuration :** `.env` (variables d'environnement : base de données, clé d'application, mode debug), dossier `config/` (`app.php`, `database.php`, `auth.php`, `mail.php`…), fichiers de routes (`routes/web.php`, `routes/api.php`), `composer.json` (dépendances). *Équivalents : `application.properties` (Spring Boot), `appsettings.json` (ASP.NET), `config/packages/*.yaml` et `.env` (Symfony).*
**1.b) Initialisation :** la requête HTTP arrive sur le point d'entrée unique (`public/index.php`, *front controller*) → chargement de l'autoloader et du conteneur de services → lecture de la configuration → middlewares (session, CSRF, authentification) → le routeur associe l'URL à une action de contrôleur → le contrôleur interroge le modèle → la vue est rendue → la réponse HTTP est renvoyée.
**2.a) Modèle :** couche qui représente les données et les règles métier (entités, accès aux données via un ORM comme Eloquent ou Doctrine).
**2.b) Rôle :** gérer la persistance (CRUD), la validation et la logique métier, indépendamment de l'affichage.
**2.c) Exemple :**
```php
class Etudiant extends Model {
protected $fillable = ['nom', 'prenom', 'cne', 'filiere_id'];
public function filiere() { return $this->belongsTo(Filiere::class); }
public function moyenne() { return $this->notes()->avg('valeur'); }
}
```
Scénario : lors de l'inscription, `Etudiant::create($donnees)` enregistre l'étudiant ; pour un relevé, `$etudiant->moyenne()` calcule la moyenne.
**3.a) Contrôleur :** couche intermédiaire qui reçoit les requêtes de l'utilisateur.
**3.b) Rôle :** traiter la requête (validation des entrées), appeler le modèle, choisir la vue et lui transmettre les données (ou retourner du JSON pour une API).
**3.c) Interaction :**
```php
class EtudiantController extends Controller {
public function index() {
$etudiants = Etudiant::orderBy('nom')->get(); // Modèle
return view('etudiants.index', compact('etudiants')); // Vue
}
public function store(Request $request) {
$data = $request->validate(['nom' => 'required|max:50', 'cne' => 'required|unique:etudiants']);
Etudiant::create($data);
return redirect()->route('etudiants.index');
}
}
```
**4.a) Vue :** couche de présentation (gabarits HTML, moteur de templates Blade, Twig, Thymeleaf).
**4.b) Rôle :** afficher les données et l'interface, sans logique métier.
**4.c)** Elle reçoit les données que le contrôleur lui passe (tableau associatif / modèle de vue), éventuellement via des composants ou des requêtes AJAX vers une API.
**5.a) Vue (Blade) :**
```blade
@extends('layouts.app')
@section('content')
<h1>Liste des étudiants</h1>
<table class="table">
<thead><tr><th>Nom</th><th>Prénom</th><th>CNE</th></tr></thead>
<tbody>
@forelse ($etudiants as $etudiant)
<tr>
<td>{{ $etudiant->nom }}</td>
<td>{{ $etudiant->prenom }}</td>
<td>{{ $etudiant->cne }}</td>
</tr>
@empty
<tr><td colspan="3">Aucun étudiant</td></tr>
@endforelse
</tbody>
</table>
@endsection
```
**5.b) Explication :** `@extends`/`@section` réutilisent le gabarit général (en-tête, menu) ; `<thead>` définit les colonnes ; `@forelse` parcourt la collection `$etudiants` transmise par le contrôleur et `@empty` gère le cas vide ; `{{ }}` affiche chaque attribut en l'**échappant automatiquement** (protection XSS).
**Sécurité – bonnes pratiques :** authentification robuste (hachage bcrypt/argon2, 2FA), autorisation par rôles (policies/gates), validation côté serveur, HTTPS, protection CSRF (jetons), en-têtes de sécurité (CSP, HSTS), mises à jour du framework et des dépendances, journalisation, gestion des secrets hors du code (.env), désactivation du mode debug en production, limitation du débit (rate limiting).
**Techniques contre SQLi et XSS :** ORM et requêtes préparées (paramètres liés), échappement systématique des sorties, filtrage/validation des entrées, Content-Security-Policy, cookies `HttpOnly` et `Secure`, WAF.
## Ex2
**a) DDoS :** attaque visant à rendre un service indisponible en le saturant de requêtes provenant de nombreuses machines (botnet). **Atténuation :** surdimensionnement et répartition de charge, CDN/anti-DDoS (Cloudflare…), filtrage et limitation de débit, pare-feu et IPS, blackholing/scrubbing chez le fournisseur, plan de réponse aux incidents.
**b) Virtualisation :** exécution de plusieurs machines virtuelles (ou conteneurs) isolées sur un même serveur physique grâce à un hyperviseur (VMware ESXi, Hyper-V, KVM, Proxmox). **Optimisation :** consolidation des serveurs (meilleur taux d'utilisation CPU/RAM), réduction des coûts et de l'énergie, déploiement rapide, snapshots et sauvegardes, haute disponibilité et migration à chaud, environnements de test.
**c) VPN :** réseau privé virtuel créant un **tunnel chiffré** à travers un réseau public (Internet) (IPsec, SSL/TLS, WireGuard). **Usages :** télétravail sécurisé (accès au SI de l'université), interconnexion de sites distants, confidentialité des échanges.
## Ex3
**a) GitHub :** un dépôt par projet avec README et `.gitignore` ; branches de fonctionnalités (*feature branches*) et branche principale protégée ; **pull requests** avec revue de code ; commits petits et messages explicites ; issues et projets pour le suivi ; intégration continue (GitHub Actions : tests, lint) ; versions étiquetées (tags, releases) ; jamais de secrets dans le dépôt ; gestion des droits et des contributeurs.
**b) REST :** style d'architecture pour les services web reposant sur des **ressources** identifiées par des URI, manipulées via les méthodes HTTP (GET lecture, POST création, PUT/PATCH modification, DELETE suppression), des échanges **sans état** (*stateless*), des représentations (JSON/XML) et des codes de statut (200, 201, 404…). Exemple : `GET /api/etudiants`, `GET /api/etudiants/12`, `POST /api/etudiants`. Utilisé pour faire communiquer applications web, mobiles et services tiers.
## Ex4
**a) Maintenance préventive :** maintenance effectuée selon un calendrier ou des critères prédéterminés, **avant** la panne (mises à jour, nettoyage, vérification des sauvegardes, contrôle des disques, remplacement préventif). Objectif : réduire la probabilité de défaillance et garantir la disponibilité du SI.
**b) Plan de maintenance :** document qui planifie les opérations ; il contient : inventaire des équipements et logiciels, type et nature des interventions, fréquences/échéances, responsables et intervenants (internes, prestataires), procédures et check-lists, ressources et pièces nécessaires, indicateurs (MTBF, MTTR, taux de disponibilité), historique et fiches d'intervention, budget.
🚩 وجدت خطأ؟ أبلغنا
الدروس اللازمة للإجابة والمراجع للتحقق
الدروس المقررة التي يجب مراجعتها للإجابة
- Architecture MVC et frameworks web
- Développement web PHP / Laravel
- Sécurité des applications web (OWASP)
- Réseaux et sécurité : DDoS, VPN
- Virtualisation
- Travail collaboratif avec Git/GitHub
- API REST
- Maintenance informatique
المفاهيم والقوانين الأساسية
- Front controller et routage
- ORM (Eloquent, Doctrine)
- Moteur de templates et échappement des sorties
- CSRF, XSS, injection SQL
- Hyperviseur et machines virtuelles
- Ressources REST et méthodes HTTP
- Maintenance préventive/corrective, MTBF/MTTR
المراجع الرسمية للتحقق من الحل
- Documentation officielle Laravel (laravel.com/docs)
- OWASP Top 10 et OWASP Cheat Sheet Series
- Pro Git (S. Chacon, B. Straub) – git-scm.com/book
- R. Fielding, Architectural Styles and the Design of Network-based Software Architectures (2000)
- Norme NF EN 13306 (terminologie de la maintenance)
مصادر رسمية: men.gov.ma • enssup.gov.ma • emploi-public.ma
امتحانات مشابهة
- Concours de recrutement d'administrateur 3e grade - Université Cadi Ayyad (Marrakech) - Spécialité informatique - Épreuve générale - Session du 05/11/2023
- مباراة توظيف متصرفي المالية من الدرجة الثانية - وزارة الاقتصاد والمالية - 05 يوليوز 2026 - العلوم الاقتصادية والتدبيرية (ECO2) - أسئلة متعددة الاختيارات
- مباراة توظيف متصرفين من الدرجة الثانية - وزارة الأوقاف والشؤون الإسلامية - دورة شتنبر 2026 - المالية والمراقبة والتدقيق / المحاسبة والمراقبة والتدقيق
- مباراة توظيف التقنيين من الدرجة الثالثة - كلية الطب والصيدلة وطب الأسنان بفاس (جامعة سيدي محمد بن عبد الله) - دورة 12/07/2026 - الموضوع العام: التغيرات المناخية والجفاف
- مباراة توظيف تقني من الدرجة الثالثة - دورة 4 أكتوبر 2026 - الاختبار الكتابي الأول (موضوع عام: أزمة المياه / الجامعة والعدالة المجالية)
- Concours de recrutement des officiers de police et officiers de paix 2025 - DGSN - Sujet de dissertation (société civile et droits de l'homme / médias sociaux)