2011-08-10 5 views
1

Je l'affiche pour une clarification dans une situation spécifique, bien que la validation d'entrée d'utilisateur/validations soit un sujet cliché.

Une partie du code contiennent

$haystack=$_GET['user']; 

entrée $ est jamais utilisé pour « echo » ou « print » ou dans une requête SQL ou une telle chose. La seule utilisation supplémentaire de l'entrée utilisateur ($ haystack) consiste à vérifier si la chaîne contient une aiguille $ prédéfinie. Mon souci est l'exécution d'un code malveillant, plutôt que la présence de celui-ci dans l'entrée de l'utilisateur. Donc la question est, si l'entrée de l'utilisateur est utilisée uniquement dans le contexte (pas d'utilisation en écho, print, SQL, etc.) mentionné ci-dessus, est-il toujours possible qu'un code malveillant dans l'entrée utilisateur soit exécuté.

Je voulais ajouter les mesures de sécurité qui sont simplement nécessaires pour le contexte plutôt que de trop en faire.

+0

il n'y a pas de problème je pense, mais le plus gros problème si vous avez oublié quelle variable est aseptisée ou non. ou si un autre programmeur après que vous pensiez qu'il est aseptisé. Je sais que c'est une bonne façon de travailler (oublier sans vérifier, mais peut arriver), mieux faire une fonction de désinfection et vous pouvez facilement l'appliquer à n'importe quelle entrée. ou mettez vos variables aseptisées dans des noms de variables clairement étiquetés comme $ clean_xxx –

+0

duplication possible de [L'utilisation de superglobales est-elle directement bonne ou mauvaise en PHP?] (http://stackoverflow.com/questions/3498207/is-using-superglobals-directly -good-or-bad-in-php) – vaxquis

Répondre

0

Il n'est pas possible d'exécuter du code arbitraire en modifiant une chaîne. Ce n'est que lorsque vous publiez la chaîne directement, ou que vous l'utilisez en SQL si vous êtes vraiment inquiet.

+2

Sauf si les motifs en dépendaient :) Hors sujet, désolé, mais le modificateur/e de preg_match peut exécuter du code. – Pelshoff

3

Si utilisé uniquement dans le contexte, il n'y a aucun moyen d'exécuter du code malveillant à partir de l'entrée de l'utilisateur.

Vous devez être prudent avec eval, preg_replace (avec modificateur e, grâce Pelshoff), les requêtes de base de données et echo (& print, sprintf ...).

0

preg_match ne finira pas l'exécution de votre entrée. C'est trop simple et direct d'avoir un bug exploitable caché. Si vous lancez $haystack après avoir exécuté preg_match dessus, alors cela ne peut pas vous blesser.

0

Bien que le $haystack ne soit pas reflété, il peut évidemment affecter le flux du programme. Le code (extrêmement court) que vous avez posté ne semble pas directement vulnérable, mais ne pas désinfecter votre entrée peut permettre l'exécution de code en conjonction avec d'autres vulnérabilités.