12
votes

HTML - Comment empêcher l'utilisateur de modifier la valeur du formulaire?

Je développe des applications Web simples permettant à l'utilisateur de saisir les informations à l'aide d'un formulaire lorsque j'ai découvert que je pouvais éditer la valeur par défaut d'entrée de ce formulaire à l'aide de Chrome -> Cochez l'élément et soumettez la page avec un autre piraté valeur.

code: xxx

comme normal, je charge la page à l'aide de Google Chrome Check Element, j'ai ciblé cette case et modifiait la valeur sur "9" avant de le soumettre, Dans ma page de fond, il lit "9" au lieu d'une valeur prédéfinie de "0" de cet élément d'entrée.

Si chaque utilisateur a changé la valeur et soumettez, elle battra complètement ma DB. Comment est-ce possible et suis-je censé crypter la page ou faire quelque chose avant de soumettre? Je suis totalement perdue, btw j'utilise php.


2 commentaires

C'est pourquoi nous sommes censés valider et assainir la saisie de notre utilisateur sur le serveur avant de faire quelque chose à distance liée à la base de données.


Ce n'est qu'une raison pour laquelle vous devriez toujours assainir et valider l'entrée de l'utilisateur sur le côté serveur.


4 Réponses :


19
votes

Pour les utilisateurs typiques, vous pouvez simplement ajouter l'attribut loadonly dans le champ Form (s).

Pour plus d'utilisateurs / pirates informatiques plus avancés qui tentent de manipuler votre serveur, vous devez valider chaque morceau de données soumises pour que la falsification soit capturée et rejetée. Il n'y a pas de technique côté client pour cela qui est inviolable.


1 commentaires

True, mais vous pouvez toujours le modifier dans un inspecteur d'élément. Go pour la validation du côté serveur est mon conseil.



2
votes

Vous ne pouvez pas empêcher les utilisateurs de modifier, d'ajouter ou d'éliminer des éléments dans le DOM. Si vous voulez ce type de contrôle, vous devez stocker les valeurs des éléments que vous émettez dans un objet, puis comparez ce qui vient avec le formulaire post.

Il y a un million de façons de faire cela, si vous voulez mal poster un exemple


0 commentaires

2
votes

Vous pouvez vérifier le bon type de valeur du côté serveur. En fait, vous devriez vérifier toutes les données envoyer du côté client pour empêcher une attaque


4 commentaires

Cela ressemble à beaucoup de travail, je pensais qu'il y avait une méthode plus simple. Merci.


@mmk: Eh bien, la sécurité est difficile. Notez que certains cadres PHP (par exemple Symfony) ont des moyens d'automatiser la validation la plus courante (afin que vous n'ayez pas besoin d'écrire vous-même tout le code de validation).


Vous ne pouvez pas faire confiance à la validation du côté client, si un utilisateur malveillant souhaite envoyer des données pour manipuler votre serveur, ils peuvent le faire facilement, je sais que cela ressemble à beaucoup de travail, mais il y a des cadres qui vous aident avec ce genre de choses, regardez Pour Cadedigniter.com


@Piskvor, je suis tellement naïf sur la sécurité Web jusqu'à il y a 10 minutes sur ma découverte qui m'a laissé abouti au monde. Je pense que je dois revoir mon site entier. :(



3
votes

Vous devez faire une validation côté serveur, pour vous assurer que les valeurs que vous obtenez de votre application client ont un sens. Si vous savez qu'une valeur de "9" "se débatte de votre dB", n'acceptez pas les valeurs de 9 du client.

Lien XKCD obligatoire: http://xkcd.com/327/


0 commentaires