Question

Les bases:

  • J'ai un formulaire de contact qui utilise php pour valider le formes. (en plus du côté client) Ceci peut être fait dans n’importe quelle langue côté serveur.
  • Le côté serveur permet uniquement     A-z 0-9 pour certains champs (il est     acceptable de valider ce champ pour     Anglais seulement avec cette gamme extrêmement limitée)
  • Si le formulaire contient des erreurs, je renseigne les champs afin que l'utilisateur n'ait pas à ressaisir avant de soumettre à nouveau
  • Je suis disposé à ne pas laisser d’autres sites publier sur mon formulaire, même si une utilisation légitime pouvait y être trouvée.

Je peux facilement créer un formulaire sur un site Web différent qui poste un mot sale dans un champ. Certains mots sales sont parfaitement légitimes selon les règles de validation, mais mon employeur ne voudrait évidemment pas que cela se produise.

J'ai l'impression que des pirates informatiques dédiés peuvent affecter les cookies, les sessions php et, bien sûr, les champs cachés, ainsi que les référents. Comment puis-je empêcher des sites tiers de publier sur ma page?

N'hésitez pas à m'aider également sur Google. Mes termes de recherche sont faibles et les méthodes que je connais vont échouer.

Et si quelqu'un soumet "d03boy mange des chats" via un formulaire sur leur site et amène les gens à cliquer sur un lien qui le soumet à mon formulaire? (Admettez que c'est possible et que mon entreprise ne peut accepter aucun risque). Ensuite, lorsqu'un utilisateur clique sur le lien qu'il voit à l'intérieur du " nom " champ "d03boy mange des chats" et devient super offensé et contacte PETA à propos du contenu de notre site. Nous ne pouvons tout simplement pas expliquer à l'utilisateur ce qui s'est passé. Certes, rien ne s'est passé, mais déranger un seul utilisateur n'est pas acceptable pour mon employeur.

Notre solution actuelle consiste à ne signaler aucune entrée d'utilisateur, ce qui, à mon avis, est un gros problème de convivialité.

Était-ce utile?

La solution

Cela ressemble à un système de modération en place pour le contenu généré par l'utilisateur, pas à une solution technique. Évidemment, vous pouvez vérifier le champ référent, le nettoyage du contenu et tenter de filtrer le profane, mais l’énumération de la bêtise jamais fonctionne. (Cela peut être un "premier passage" acceptable, mais les humains évitent infiniment ces filtres pour éviter de tels filtres).

Mettez le contenu soumis par l'utilisateur dans une file d'attente et demandez aux modérateurs de vérifier et d'approuver le contenu. Pour alléger la charge, vous pouvez définir les utilisateurs de confiance sur "pré-approuvé", mais vous avez indiqué que votre client ne pouvait accepter aucun risque.

Franchement, je trouve cela impossible: même avec les modérateurs, un modérateur risque de renverser votre système. Si cela est vrai (ils n'ont aucune tolérance au risque), alors je leur suggère de n'accepter aucune entrée d'utilisateur, de ne pas faire confiance aux modérateurs et, en fait, d'éliminer le site lui-même (car un initié pourrait devenir méchant et mettre en place quelque chose d'imprévu). Il est clair que chaque acte comporte des risques. vous devez savoir combien ils peuvent accepter, par exemple une file d’approbation basée sur un modérateur.

Autres conseils

Je ne suis pas sûr de bien comprendre votre question, mais je ferai de mon mieux pour vous donner une réponse élémentaire.

Le script intersite (XSS) se produit généralement lorsque quelqu'un d'autre insère du HTML dans vos formulaires. Votre site Web le permet, car il n'échappe pas correctement au code HTML. Si vous utilisez PHP, vous voudrez probablement utiliser la fonction htmlentities ($ str, ENT_QUOTES).

htmlentities($str, ENT_QUOTES)

htmlentities PHP

Ma tentative

...
<?
$form_token = "";
$token = "";
$encoded_token = "";
$salt = "ThiséèÞ....<*>#214;yiìeéèÞ";  //it is 70 characters long
...
...
$blnGoodToken = false;
...
...
//Check for the encoded token
session_start();
$encoded_token = GetSuper('POST', 'TOKEN');
if (isset(

Ma tentative

<*>

Etant donné que je n'utilise aucune session ailleurs sur le site, je ne pense pas que nous sommes exposés à un détournement de session. Le jeton change à chaque chargement, et pour que le jeton corresponde à la session, vous devez le savoir

.
  1. J'utilise SHA. Une supposition facile à faire sur mon code php
  2. Je le garde en session. Je suppose la session est giquable
  3. mon sel. Je pense que c'est un bon secret. S'ils connaissent mon sel ils déjà possédait mon serveur
SESSION['TOKEN'])) { if (sha1(

Ma tentative

<*>

Etant donné que je n'utilise aucune session ailleurs sur le site, je ne pense pas que nous sommes exposés à un détournement de session. Le jeton change à chaque chargement, et pour que le jeton corresponde à la session, vous devez le savoir

.
  1. J'utilise SHA. Une supposition facile à faire sur mon code php
  2. Je le garde en session. Je suppose la session est giquable
  3. mon sel. Je pense que c'est un bon secret. S'ils connaissent mon sel ils déjà possédait mon serveur
SESSION['TOKEN'] + $salt) === $encoded_token) { $blnGoodToken = true; //echo "Good Token"; } else { //echo "Bad Token"; $blnGoodToken = false; unset(

Ma tentative

<*>

Etant donné que je n'utilise aucune session ailleurs sur le site, je ne pense pas que nous sommes exposés à un détournement de session. Le jeton change à chaque chargement, et pour que le jeton corresponde à la session, vous devez le savoir

.
  1. J'utilise SHA. Une supposition facile à faire sur mon code php
  2. Je le garde en session. Je suppose la session est giquable
  3. mon sel. Je pense que c'est un bon secret. S'ils connaissent mon sel ils déjà possédait mon serveur
SESSION); session_unset(); session_destroy(); session_start(); } } else { $blnDoit = false; echo "No Token, possible no session"; } $token = uniqid(rand(), TRUE);

Ma tentative

<*>

Etant donné que je n'utilise aucune session ailleurs sur le site, je ne pense pas que nous sommes exposés à un détournement de session. Le jeton change à chaque chargement, et pour que le jeton corresponde à la session, vous devez le savoir

.
  1. J'utilise SHA. Une supposition facile à faire sur mon code php
  2. Je le garde en session. Je suppose la session est giquable
  3. mon sel. Je pense que c'est un bon secret. S'ils connaissent mon sel ils déjà possédait mon serveur
SESSION['TOKEN'] = $token; $form_token = sha1($token + $salt); ... ... ?> ... ... <form action="request.php?doit=y" method="post"> <input type="text" name="TOKEN" id="TOKEN" value="<?=$form_token?>" /> <!-- form stuff --> <input type="reset" value="Clear" /> <input type="submit" value="Submit" /> </form>

Etant donné que je n'utilise aucune session ailleurs sur le site, je ne pense pas que nous sommes exposés à un détournement de session. Le jeton change à chaque chargement, et pour que le jeton corresponde à la session, vous devez le savoir

.
  1. J'utilise SHA. Une supposition facile à faire sur mon code php
  2. Je le garde en session. Je suppose la session est giquable
  3. mon sel. Je pense que c'est un bon secret. S'ils connaissent mon sel ils déjà possédait mon serveur
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top