Je vérifie actuellement toutes les get and post variable avec dans ma demande de production, j'ai un global Handlicateur d'exception qui publie des exceptions et des erreurs dans un fichier journal, puis redirige vers une page d'excuses génériques. P> est-ce une bonne pratique? Sont des exceptions descriptives et des messages d'erreur tels que ceux qui sont au-dessus des risques de sécurité (est-il possible qu'un pirate informatif puisse lire l'avis d'exception puis utiliser ces informations pour manipuler mes scripts)? P> Merci! p> p> Isset () CODE> et lancez des exceptions lorsque Isset () code> renvoie false.
4 Réponses :
"Est-il possible qu'un pirate informatique puisse lire l'avis d'exception puis utiliser ces informations pour manipuler mes scripts?" P>
Peut-être. p>
Typiquement, vous souhaitez donner le moins d'informations possible à l'utilisateur final dans une condition d'erreur. Dans ce cas, si vous dites à une personne une variable d'obtention particulière n'existe pas, alors ils pourraient essayer de fournir des valeurs aléatoires à cette variable pour voir comment l'application se comporte. P>
Bien sûr, vous devez également équilibrer cela contre les besoins de vos vrais utilisateurs. Si la variable est une fois qu'elle aurait normalement un contrôle, alors donner la réponse à un problème de la valeur est parfaitement acceptable. P>
Compte tenu récemment dans une crise d'API Web qui semblent penser à lancer des messages d'erreur génériques, c'est la voie à suivre, je veux mettre à jour ceci légèrement. P>
Dans un cas récent pour une API de traitement de paiement, leur documentation était tout simplement fausse. Les données de la transaction de test qu'ils ont montré de manière systématiquement retournée par «Erreur de serveur 500» et nous n'avions pas de recours, mais pour obtenir l'un de leurs développeurs sur le téléphone et faire preuve de traction de chaque élément de leur XML. Sur 50 éléments, un seul nom avait le même nom que ce qui était dans leurs "documents de développeur" Dans les deux cas ci-dessus, il aurait été incroyablement utile si le message d'erreur avait répondu avec un exemple de document de document valide. Semblable à la manière dont les anciennes commandes UNIX / DOS reviendront avec les informations d'aide lorsque vous avez passé de mauvais paramètres. Je ne veux vraiment pas parler à d'autres programmeurs. Je sais que leur temps est chère et ils préfèrent beaucoup faire autre chose que de répondre à un appel de support; Mais plus au point, si je travaille à 22h00 et que vous avez besoin d'une réponse RFN, puis d'attendre qu'un programmeur puisse passer au téléphone le lendemain est rarement une option. P>
Dans une autre intégration, nous avons reçu une "erreur de serveur 402". - Celui-ci n'était pas une passerelle de paiement. Bien que jamais référencé dans leur doc, apparemment, ce message signifiait qu'un paramètre JSON manquait. Incidemment, il s'agissait d'un paramètre non référencé dans leurs documents et a de nouveau besoin de temps avec leur développeur pour l'identifier. p>
Affichage des erreurs détaillées sur un utilisateur peut em> être un risque de sécurité. Étant donné dans ce cas, ils ne sont en cours d'écriture dans un fichier journal et les seules données reçues sont une page générique qui ne révèle rien, vous pouvez être aussi descriptif que vous le souhaitez et que vous ne révétez rien à moins que le journal soit compromis. p>
Il est généralement considéré qu'il est évident d'imprimer des messages d'erreur système PHP sur un serveur de production au lieu de la journaliser silencieusement.
Bien que je ne trouve rien de dangereux dans la page d'excuses génériques. p>
Les erreurs de journalisation et la suppression de la sortie est in owasp Top 10 pour 2007 Il y a Fuite d'informations et Manipulation erronée incorrecte , mais ceci a été supprimé en 2010. En définissant Lorsque vous combinez ceci sur une application PHP / MySQL, vous pouvez effectuer une attaque très grave p> si p> ce qui rend cette requête complète: p> Je vous assurerais dislaly_errors = sur code> dans votre php.ini, vous devenez vulnérable à display_errors = off code> et ce fichier fichier code> Les privilèges ont été révoqués sur le compte d'utilisateur MySQL de votre application Web. p> p>
@letseatFood Il y a quelques personnes sur ce que vous donnez -1's parce que je suis un abruti :)
Comme il semble que vous ressemblez simplement au contenu des paramètres d'obtention, des données disponibles en regardant de toute façon l'URL, je ne vois pas comment cela pourrait être un risque de sécurité autre que de l'attirer l'attention. EDIT: N'a pas réalisé que vous faisiez la distinction entre différents types de données dans les messages d'erreur - je suppose que ces connaissances pouvaient être exploitées à une fin, mais si vous assainissez les saisies, je ne sais pas comment.