Quiz: Sécurité et gestion des requêtes SQL — 20 domande

Domande e risposte dettagliate

1. Quelle est la fonction principale d’une requête préparée PDO ?

Remplacer les jointures par des filtres côté navigateur
Transformer une requête SELECT en procédure stockée
Séparer le SQL des valeurs puis exécuter avec des paramètres
Concaténer automatiquement les valeurs dans la chaîne SQL

Séparer le SQL des valeurs puis exécuter avec des paramètres

Spiegazione

Une requête préparée sépare le texte SQL des valeurs, puis transmet les paramètres à l’exécution, ce qui évite la concaténation dangereuse. Elle ne sert pas à assembler des chaînes SQL automatiquement.

2. Que permet l’option PDO::ATTR_EMULATE_PREPARES réglée à false ?

Convertir les résultats en tableau associatif
Autoriser la concaténation des paramètres nommés
Utiliser le mécanisme natif des requêtes préparées du SGBD
Afficher les erreurs SQL directement dans la page

Utiliser le mécanisme natif des requêtes préparées du SGBD

Spiegazione

Cette option désactive l’émulation pour s’appuyer sur les vraies requêtes préparées du SGBD. Elle n’a pas pour rôle de gérer l’affichage des erreurs ni de convertir les résultats.

3. Quel est le rôle de bcrypt lors du stockage d’un mot de passe ?

Générer un identifiant de session aléatoire
Produire un hachage lent et résistant au brute force
Comparer directement deux mots de passe en clair
Chiffrer le mot de passe avec une clé réversible

Produire un hachage lent et résistant au brute force

Spiegazione

bcrypt est conçu pour hacher les mots de passe de manière lente afin de compliquer les attaques par force brute. Il ne s’agit pas d’un chiffrement réversible.

4. À quoi sert password_verify en PHP ?

À échappper du contenu HTML avant affichage
À échanger un cookie contre un jeton CSRF
À générer un hash à partir d’une adresse e-mail
À comparer un mot de passe saisi à un hash stocké

À comparer un mot de passe saisi à un hash stocké

Spiegazione

password_verify compare la saisie en clair au hash stocké et indique si la correspondance est correcte. La génération du hash relève plutôt de password_hash.

5. Quel est l’objectif principal d’un Content-Security-Policy ?

Forcer l’usage d’un mot de passe long
Empêcher la suppression d’une session côté serveur
Limiter les origines autorisées pour les scripts et ressources
Bloquer toute requête SQL non préparée

Limiter les origines autorisées pour les scripts et ressources

Spiegazione

Content-Security-Policy définit quelles sources de scripts et de ressources sont autorisées, ce qui réduit l’impact d’une injection. Il ne gère pas les sessions ni les requêtes SQL.

6. Quel en-tête réduit le risque de clickjacking en contrôlant l’intégration dans un iframe ?

X-Content-Type-Options
Content-Security-Policy
Strict-Transport-Security
X-Frame-Options

X-Frame-Options

Spiegazione

X-Frame-Options contrôle si une page peut être intégrée dans une iframe, ce qui limite les attaques par clickjacking. X-Content-Type-Options agit plutôt sur le type MIME.

7. Que doit faire une déconnexion complète côté serveur ?

Effacer uniquement l’historique du navigateur
Supprimer la session serveur et invalider les jetons ou cookies
Masquer seulement le lien de déconnexion dans l’interface
Modifier le mot de passe de l’utilisateur

Supprimer la session serveur et invalider les jetons ou cookies

Spiegazione

Une déconnexion complète implique de détruire la session côté serveur et d’invalider les éléments de réutilisation. Une simple suppression côté navigateur ne suffit pas.

8. Quel mécanisme permet de protéger une action sensible contre une requête forgée ?

Un hash bcrypt du mot de passe
Une requête SQL préparée
Un en-tête X-Frame-Options
Un token CSRF vérifié côté serveur

Un token CSRF vérifié côté serveur

Spiegazione

Le token CSRF est associé à la requête et vérifié côté serveur pour bloquer les actions forgées. bcrypt, X-Frame-Options et les requêtes préparées répondent à d’autres besoins.

9. Que signifie le principe du moindre privilège ?

Chiffrer les permissions avant exécution
Retirer automatiquement les rôles inactifs
Donner tous les droits à un compte de service
Accorder uniquement les droits strictement nécessaires

Accorder uniquement les droits strictement nécessaires

Spiegazione

Le moindre privilège consiste à limiter chaque compte aux actions indispensables à sa tâche. Cela réduit l’impact d’une compromission.

10. Quelle différence décrit correctement GRANT et REVOKE ?

GRANT valide une transaction, REVOKE l’annule
GRANT chiffre des données, REVOKE les déchiffre
GRANT accorde des droits, REVOKE les retire
GRANT supprime des tables, REVOKE les crée

GRANT accorde des droits, REVOKE les retire

Spiegazione

GRANT sert à accorder explicitement des permissions, tandis que REVOKE sert à les retirer. Les autres propositions mélangent ces commandes avec d’autres mécanismes.

11. Qu’est-ce qu’un trigger MySQL ?

Une commande qui accorde des droits SQL
Un code exécuté automatiquement lors d’un événement sur une table
Une vue qui filtre les lignes visibles
Une fonction de hachage de mot de passe

Un code exécuté automatiquement lors d’un événement sur une table

Spiegazione

Un trigger MySQL exécute automatiquement du code lors d’un INSERT, UPDATE ou DELETE sur une table. Ce n’est ni une vue ni un mécanisme de droits.

12. Pourquoi une table de journalisation comme journal_actions est-elle utile ?

Pour stocker les mots de passe en clair
Pour remplacer les index de la base
Pour accélérer le rendu HTML côté client
Pour conserver des traces d’accès et d’actions afin de faciliter l’audit

Pour conserver des traces d’accès et d’actions afin de faciliter l’audit

Spiegazione

Une table dédiée permet de garder des traces exploitables pour la surveillance, l’enquête et la preuve. Elle n’a pas vocation à stocker des secrets en clair.

13. Que garantit l’option WITH CHECK OPTION sur une vue SQL ?

Les permissions SQL sont remplacées par la vue
Toute modification via la vue doit respecter le prédicat de la vue
Toute ligne de la table devient invisible
La vue devient automatiquement chiffrée

Toute modification via la vue doit respecter le prédicat de la vue

Spiegazione

WITH CHECK OPTION empêche qu’une ligne modifiée via la vue sorte du périmètre défini par le WHERE. Elle n’a pas pour effet de chiffrer ni de remplacer les droits SQL.

14. Que peut-il se passer sans WITH CHECK OPTION lors d’une mise à jour via une vue ?

La base refuse toute lecture sur cette table
La vue devient une procédure stockée
Le serveur efface automatiquement toutes les autres lignes
Une ligne peut rester en base tout en ne correspondant plus au filtre de la vue

Une ligne peut rester en base tout en ne correspondant plus au filtre de la vue

Spiegazione

Sans cette option, une mise à jour peut faire sortir une ligne du filtre tout en la laissant présente dans la table. C’est précisément ce que WITH CHECK OPTION évite.

15. Quelle pratique évite l’injection SQL lors d’un accès avec un identifiant fourni par l’utilisateur ?

Concaténer directement la valeur dans le SQL
Afficher l’erreur complète dans le navigateur
Utiliser une requête préparée avec placeholders
Stocker la valeur dans un cookie

Utiliser une requête préparée avec placeholders

Spiegazione

Les requêtes préparées avec placeholders séparent le SQL des données et bloquent la concaténation dangereuse. La concaténation directe reste une cause classique d’injection.

16. Quel couple de paramètres est recommandé pour afficher une variable sans exposer d’XSS ?

GRANT avec REVOKE
htmlspecialchars avec ENT_QUOTES et UTF-8
password_hash avec coût 12
random_bytes avec bin2hex

htmlspecialchars avec ENT_QUOTES et UTF-8

Spiegazione

htmlspecialchars avec ENT_QUOTES et UTF-8 neutralise les caractères susceptibles de produire du code HTML ou JavaScript. Les autres options répondent à d’autres problèmes de sécurité.

17. Que désigne une transaction en SQL ?

Une vue filtrante qui limite les lignes visibles
Une commande qui modifie les droits d’un utilisateur
Un hachage de mot de passe résistant
Un bloc d’exécution regroupant plusieurs opérations, validé par COMMIT ou annulé par ROLLBACK

Un bloc d’exécution regroupant plusieurs opérations, validé par COMMIT ou annulé par ROLLBACK

Spiegazione

Une transaction regroupe plusieurs opérations qui doivent être validées ensemble avec COMMIT ou annulées avec ROLLBACK. Ce n’est ni une vue ni un mécanisme de droits.

18. À quoi sert un EXIT HANDLER FOR SQLEXCEPTION ?

À rendre une page compatible avec les iframes
À générer un token CSRF aléatoire
À intercepter une erreur SQL et permettre d’annuler la transaction
À accorder des privilèges sur une table

À intercepter une erreur SQL et permettre d’annuler la transaction

Spiegazione

Ce gestionnaire s’exécute en cas d’exception SQL et peut déclencher un ROLLBACK pour annuler la transaction. Il n’a pas de rôle dans les jetons CSRF ou les privilèges.

19. Dans le référentiel OWASP Top 10, à quelle catégorie se rattache une faiblesse de contrôle d’accès ?

A01 Accès et moindre privilège
A09 Journalisation et monitoring
A03 Injection SQL et XSS
A02 Crypto et hachage

A01 Accès et moindre privilège

Spiegazione

Les problèmes de contrôle d’accès et l’absence de moindre privilège relèvent de A01. A03 concerne plutôt les injections et A09 les logs.

20. Quelle combinaison correspond le mieux à une protection contre une injection SQL ?

Utiliser PDO avec prepare puis execute
Créer un trigger sur chaque table
Ajouter X-Frame-Options à la réponse
Remplacer les mots de passe par bcrypt

Utiliser PDO avec prepare puis execute

Spiegazione

La protection contre l’injection SQL passe par des requêtes préparées avec paramètres séparés, puis execute. Les autres mesures répondent à d’autres risques de sécurité.

Ripassa con le flashcard

Memorizza le risposte con 20 flashcard su Sécurité et gestion des requêtes SQL.

Requête préparée PDO — rôle ?

Sécurise contre injection SQL en séparant SQL et valeurs.

Paramètres nommés PDO — avantage ?

Facilitent la liaison des valeurs aux placeholders.

PDO::ATTR_ERRMODE — configuration ?

Signale les erreurs via exceptions.

Vedi le flashcard →

Studia la scheda di revisione

Leggi la scheda di revisione completa su Sécurité et gestion des requêtes SQL.

Vedi la scheda di revisione →

Similar courses

Crea i tuoi quiz

Importa il tuo corso e l'AI genera quiz con correzioni in 30 secondi.

Generatore di quiz