8768 sujets

Développement web côté serveur, CMS

Hello les Alsanautes Smiley smile

Je programme un petit site d'apprentissage de vocabulaire. Les utilisateurs connectés peuvent répondre à des quiz de listes de vocabulaire, et une fois qu'ils ont fini le quiz leur score est enregistré dans la base de données.

J'ai vu sur internet qu'ajax pouvait poser de gros risques de sécurité, notamment les attaques cross-site CSRF.

Dans les exemples que j'ai vus il faut utiliser une clé token mais j'ai du mal a comprendre le principe.

Ce que je ne comprends pas est que dans mon cas sur mon site, seuls les utilisateurs connectés peuvent jouer aux quizs, les scripts AJAX ne peuvent donc s'éxecuter que si l'utilisateur est déja connecté à son compte, je pense ne pas avoir besoin de sécuriser mon site contre les CSRF.

Dites-moi si je me trompe mais je pense ne pas avoir besoin de sécuriser mes scripts ajax avec un token car de toute façon mes scripts ajax ne sont accessibles qu'aux utilisateurs qui sont connectés, exemple:
if ($userID > 0 ){

    saveScoresAjax( $userID, $scoresJSON );

} else { die('vous devez être connecté pour exécuter le script ajax'); }


Est-ce que la faille CSRF s'applique uniquement à des scripts ajax publics accessible à tout le monde même des visiteurs anonymes (par exemple un champ de recherche ajax sur la page d'accueil) ?
Modifié par ZlatenSkunk (03 Feb 2021 - 08:21)
J'étais un peu perdu hier mais en fait c'est tout simple. Je me permets de revenir compléter ces informations dans le cas où ça peut aider d'autres personnes.

- vous n'avez probablement pas besoin de générer vous-même ce token en php
- car ce token est généralement généré automtiquement par votre CMS
- une fois que vous avez trouvé sa clé dans votre CMS il suffit de placer ce token dans votre code
- dans les formulaires html avec une balise d'attribut hidden
- ainsi que dans votre portion de code javascript pour ajax
- une fois ceci effectué: dans votre php, placez simplement une condition if
- si le token mémorisé par votre CMS ne correspond pas à $_POST['mon_token'] n'envoyez pas les informations de votre formulaire ou les données ajax, mais affichez un message d'erreur à la place

Voilà Smiley smile

Merci encore pour ce lien niuxe