Récemment, j'ai commencé à creuser dans la fonction ajax de jquery. J'ai apporté beaucoup d'améliorations, mais je ne suis pas sûr sur un point. Comment sécuriser mes appels ajax ..Sécurisation des appels jquery ajax
Par exemple, ce code pour la suppression d'un lien:
// Delete link
$('.delete_update').live("click",function() {
var ID = $(this).attr("id");
var dataString = 'linkid='+ ID;
if(confirm('<?php echo _("Are you sure you want to delete this link?");?>')) {
$.ajax({
type: "POST",
url: "ajaxsave.php",
data: dataString,
cache: false,
success: function(html){
$(".bar"+ID).fadeOut('slow', function() {$(this).remove();});
}
});
}
return false;
});
Comme le montre l'exemple ajaxsave.php prend soin de supprimer le lien avec le matchin POST linkid. À ma connaissance, il est possible de soumettre un formulaire de publication à une URL externe. Ce qui signifie que tout le monde serait capable de regarder mon code source et de faire leurs propres formulaires en choisissant leur propre linkid. De cette façon, ils peuvent supprimer tous les liens qu'ils veulent.
Comment sécuriser mon code? - Http référent dans ajaxsave.php? Les scripts Curl pourraient ruiner cela. - Utilisation de session ou de cookies sur la page appelant la fonction ajax? Enregistrer la session dans une base de données et la vérifier dans ajaxsave.php?
Pouvez-vous m'aider? Comment faites-vous cela d'une manière élégante. Ou ce qui est "normal" sur tous ces sites ajax modernes ..
Merci pour votre réponse. C'est exactement mon inquiétude. Et ce n'est pas possible? Vos exemples de visite de ces URL ne fonctionneront pas car les données sont passées en POST et non en GET. Mening que ajaxsave.php ne supprime pas une chose si elle ne reçoit pas le format POST prober. Et le site où il est possible de supprimer ces liens via ajax est, bien sûr, protégé par mot de passe. Mon inquiétude concernait la forme post à l'URL externe. –
@ s0mmer, ce n'est pas possible avec Ajax, mais très possible et facile d'écrire un script en utilisant wget ou curl. – hvgotcodes
@hvgotcodes Comment puis-je empêcher cela? –