Souvent, lorsque je travaille sur des applications AJAX, je passe des paramètres via POST. Certaines parties de l'application peuvent envoyer le même nombre de paramètres ou le même ensemble de données, mais en fonction d'un paramètre personnalisé que je passe, il peut faire quelque chose de complètement différent (comme supprimer au lieu d'insérer ou mettre à jour). Lors de l'envoi des données, je vais souvent faire quelque chose comme ceci:Manipulation POST, données de sécurité et problèmes de sécurité AJAX
$.post("somepage.php", {action: "complete", somedata: data, moredata: anotherdata}, function(data, status) {
if(status == "success") {
//do something
}
});
Sur une autre partie de l'application, je pourrais avoir un code similaire, mais la mise en place de la propriété d'action pour deny
ou quelque chose application spécifique qui au lieu de déclencher le code à supprimer ou déplacer des données du côté serveur.
J'ai entendu parler des outils qui vous permettent de modifier les requêtes POST et les données qui leur sont associées, mais je n'ai utilisé qu'un seul outil appelé Tamper Data for Firefox. Je sais que les chances de quelqu'un de modifier les données d'une demande POST est mince et encore plus mince pour eux de changer une propriété clé pour que l'application fasse quelque chose de différent sur le backend (comme changer action: "complete"
en action: "deny"
), mais je suis sûr se produit dans les attaques quotidiennes sur les applications Web. Quelqu'un peut-il suggérer de bons moyens d'éviter ce genre de falsification? J'ai pensé à quelques moyens qui consistent à vérifier si l'action est fausse pour l'événement déclenché et à valider cela avec tout le reste, mais je peux voir qu'il y a 100 lignes de code supplémentaires pour chaque partie de l'application qui a besoin avoir ce genre de demandes protégées.