Ne pas accéder à superglobale $_GET tableau directement
Je suis nouveau en PHP, donc pardonnez-moi si c'est une question stupide, mais pourquoi devrais-je pas accéder aux éléments dans les tableaux superglobaux directement? NetBeans me prévient de ne pas (voir le titre), et j'ai lu la même chose ailleurs, je n'ai cependant pas une bonne explication encore.
Ce qui peut aller mal? Est-ce un problème de sécurité, comme l'injection SQL? Ou quelque chose d'autre?
Il y a plusieurs questions similaires sur StackOverflow, mais aucune des réponses réellement expliquer ce qu'est le problème: ils ont juste vous suggérons d'utiliser filter_input()
. Cela ne me satisfont pas, car j'aime savoir comment les choses fonctionnent. Toute explication sera appréciée.
Parce que les données que vous recevez à partir d'un client inconnu est peut-être endommagé. La perte de votre base de données est le plus petit problème ici. XSS ou de l'utilisation de votre serveur pour spamattacks sur les autres peut créer beaucoup de problèmes, seulement parce que tu na pas valider le userinput.
Vous pouvez trouver des conseils utiles sur le phptherightway.com/#data_filtering
$_GET
et $_POST
pose exactement les mêmes menaces à la sécurité de votre script PHP. Quand quelque chose dit de ne pas accéder directement ce que cela signifie "Ne pas faire confiance à la source qui a fourni les données, assurez-vous de désinfecter et de vérifier avant de l'utiliser dans votre script". Une bonne raison de ne pas utiliser $_GET
plus précisément, c'est lors de la soumission de formulaires, car elle peut conduire à un navigateur trace de l'histoire donc, si c'est un écran de connexion, puis vous pouvez voir someScript.php?user=something&password=plainText
mais avec un message, vous ne serez pas en mesure de voir les valeurs transmises.Merci @une.yastreb , la lecture que maintenant.
OriginalL'auteur Obversity | 2014-01-22
Vous devez vous connecter pour publier un commentaire.
Bien, dans les cas ordinaires, il n'y a pas de mal de l'aide de la super variables globales directement,
mais pour rester sur le côté sécuritaire et d'éviter une longue liste d'attaques possibles vous devez filtrer les données provenant de l'utilisateur jeter ces vars avant de les utiliser dans votre application
OriginalL'auteur osmancode