2010-09-08 7 views
1

J'accepte le texte de l'utilisateur dans un formulaire et l'écho sur la page (le code va à la base de données, mais ce sont des requêtes préparées donc pas de soucis là). Je voulais savoir s'il y a des implications de sécurité possibles qui peuvent être causées par cela? Du côté serveur, je veux dire, je sais que du côté client, vous pouvez casser mais pouvez-vous atteindre le côté serveur?problèmes de sécurité avec l'écho d'un utilisateur entré le texte

J'ai besoin de savoir si quelque chose comme eval peut être fait avec ce cas.

Répondre

2

Le scénario que vous avez expliqué s'appelle XSS. Il est possible de compromettre votre serveur à l'aide d'une vulnérabilité XSS, mais il faut que d'autres choses tombent en place.

Supposons que vous ayez un compte d'administrateur autorisé à apporter des modifications de configuration à votre serveur sur le Web. Maintenant, si un attaquant crée un lien XSS et que l'administrateur clique dessus, son compte sera compromis. Une fois que l'attaquant dispose d'un accès administrateur, il peut prendre systématiquement le contrôle de l'ensemble du système. Cela est arrivé récemment avec Apache - read their article on it. C'est la meilleure description d'un incident de sécurité que j'ai jamais vu, vous en apprendrez beaucoup.

+0

+1. bel article .. vous manquez tout le point cependant .. je ne suis pas inquiet de l'injection côté client et quels effets il peut avoir .. j'ai besoin de savoir si cela peut avoir des implications côté serveur. Merci pour l'effort. – pinaki

+0

@pinaki - Cela peut aussi affecter le côté serveur, ** si ** vous utilisez un serveur include/eval basé sur le contenu fourni par l'utilisateur. Par exemple, voir cette page - http://www.owasp.org/index.php/File_System#Includes_and_Remote_files –

+0

@pinaki .. mais en dehors de cela, XSS ne peut pas directement causer de dommages au serveur; C'est une chose du côté client. –

0

utilisez htmlspecialchars ($ yourstring) en php, ou strip caractères, pas besoin d'ouvrir des possibilités pour les exploits.

+0

y a-t-il des exploits côté serveur possibles? Pouvez-vous donner un exemple? – pinaki

+0

élaborer sur les exploits côté serveur? XSS est un exploit côté serveur. (en effet) Entrée de l'utilisateur si non désinfecté peut effacer des bases de données entières ou faire toutes sortes de choses indésirables, lire l'injection SQL. – Ross

0

Si vous utilisez directement l'entrée utilisateur pour interroger une base de données SQL, vous pouvez être soumis à des injections SQL. Juste google pour des exemples.

EDIT: Oh, j'ai raté le texte en disant que vous venez de faire écho au texte. Hm, eh bien, peut-être que l'utilisateur peut lancer des commandes PHP si vous évaluez l'entrée de l'utilisateur. Mais je ne sais pas pourquoi vous devriez le faire car alors l'utilisateur pourrait envoyer des commandes PHP au serveur (ce qui représente un risque de sécurité évident) ...

+0

je ne fais pas un eval .. donc ce cas n'existe pas .. – pinaki

0

Utilisation:

echo htmlentities($string); 

partout. À moins que vous souhaitez ouvrir votre application à des dizaines d'attaques possibles:

http://ha.ckers.org/xss.html

Si vous avez besoin de faire écho un balisage HTML:

1) Utilisation htmlpurifier sur le HTML avant de l'enregistrer à la base de données.

2) Je recommande d'utiliser le filtrage XHTML STRICT.

3) Interdire les balises comme les scripts, les cadres, les attributs comme onclick, etc. La liste des balises et des attributs que les utilisateurs qui entrent dans HTML ne devraient jamais avoir besoin est assez longue. Limitez-les à ce dont ils pourraient avoir besoin, par exemple: p, ol, ul, h1, h2, h3, dl, abbr, img (ceux-ci peuvent être dangereux, de nombreuses attaques possibles via img tag, attention), a (detto), table, peut-être un peu plus.

Questions connexes