je trouve que c'est presque mieux d'utiliser $_REQUEST, si
cela incite à vérifier d'autant mieux le *contenu* des variables plutôt
que leur *provenance*.
Oh, mais c'est génial, ça ! Ça faisait longtemps que John Gallet
regrettait que ça n'existe pas en standard, mais je vois que tout finit
par arriver.
je trouve que c'est presque mieux d'utiliser $_REQUEST, si
cela incite à vérifier d'autant mieux le *contenu* des variables plutôt
que leur *provenance*.
Oh, mais c'est génial, ça ! Ça faisait longtemps que John Gallet
regrettait que ça n'existe pas en standard, mais je vois que tout finit
par arriver.
je trouve que c'est presque mieux d'utiliser $_REQUEST, si
cela incite à vérifier d'autant mieux le *contenu* des variables plutôt
que leur *provenance*.
Oh, mais c'est génial, ça ! Ça faisait longtemps que John Gallet
regrettait que ça n'existe pas en standard, mais je vois que tout finit
par arriver.
Pour ma part, je considère que c'est une énorme faille que de passer par
$_REQUEST, essentiellement lorsqu'il s'agit de données provenant d'un
formulaire utilisateur.
Si la sécurité d'une application est uniquement basée sur le fait que
c'est un GET plutôt qu'un POST ou le contraire, alors cette application
n'a aucune réelle mesure de sécurité.
Tous les gens qui croient corriger un problème de sécurité en changeant un
GET par un POST ne comprennent en général pas grand chose au réel problème
de sécurité sous-jacent.
De nombreux autres frameworks ne font pas de différence entre GET et POST
(à juste raison). Ce qui me gêne davantage c'est la présence de $_COOKIE
dans $_REQUEST, et c'est marrant personne ne le mentionne :-)
Pour ma part, je considère que c'est une énorme faille que de passer par
$_REQUEST, essentiellement lorsqu'il s'agit de données provenant d'un
formulaire utilisateur.
Si la sécurité d'une application est uniquement basée sur le fait que
c'est un GET plutôt qu'un POST ou le contraire, alors cette application
n'a aucune réelle mesure de sécurité.
Tous les gens qui croient corriger un problème de sécurité en changeant un
GET par un POST ne comprennent en général pas grand chose au réel problème
de sécurité sous-jacent.
De nombreux autres frameworks ne font pas de différence entre GET et POST
(à juste raison). Ce qui me gêne davantage c'est la présence de $_COOKIE
dans $_REQUEST, et c'est marrant personne ne le mentionne :-)
Pour ma part, je considère que c'est une énorme faille que de passer par
$_REQUEST, essentiellement lorsqu'il s'agit de données provenant d'un
formulaire utilisateur.
Si la sécurité d'une application est uniquement basée sur le fait que
c'est un GET plutôt qu'un POST ou le contraire, alors cette application
n'a aucune réelle mesure de sécurité.
Tous les gens qui croient corriger un problème de sécurité en changeant un
GET par un POST ne comprennent en général pas grand chose au réel problème
de sécurité sous-jacent.
De nombreux autres frameworks ne font pas de différence entre GET et POST
(à juste raison). Ce qui me gêne davantage c'est la présence de $_COOKIE
dans $_REQUEST, et c'est marrant personne ne le mentionne :-)
Freddy DISSAUX a écrit :Personnellement, je recommande chaudement l'utilisation de $_REQUEST
pour éviter les mélimélo $_GET/$_POST.
C'est que tu n'as pas compris la différence sémantique entre HTTP GET
et HTTP POST, ni les implications en terme de sécurité que cela implique.
Avec un heredoc du plus bel effet:
$msg = <<<EOT;
Nom: {$_REQUEST['nom']}
E-Mail: {$_REQUEST['email']}
Message: {$_REQUEST['message']}EOT;
Comme au bon vieux temps du global_register.
Et on n'hésite pas à utiliser filter: http://fr3.php.net/filter
Certes, la seule bonne idée du message.
Freddy DISSAUX a écrit :
Personnellement, je recommande chaudement l'utilisation de $_REQUEST
pour éviter les mélimélo $_GET/$_POST.
C'est que tu n'as pas compris la différence sémantique entre HTTP GET
et HTTP POST, ni les implications en terme de sécurité que cela implique.
Avec un heredoc du plus bel effet:
$msg = <<<EOT;
Nom: {$_REQUEST['nom']}
E-Mail: {$_REQUEST['email']}
Message: {$_REQUEST['message']}
EOT;
Comme au bon vieux temps du global_register.
Et on n'hésite pas à utiliser filter: http://fr3.php.net/filter
Certes, la seule bonne idée du message.
Freddy DISSAUX a écrit :Personnellement, je recommande chaudement l'utilisation de $_REQUEST
pour éviter les mélimélo $_GET/$_POST.
C'est que tu n'as pas compris la différence sémantique entre HTTP GET
et HTTP POST, ni les implications en terme de sécurité que cela implique.
Avec un heredoc du plus bel effet:
$msg = <<<EOT;
Nom: {$_REQUEST['nom']}
E-Mail: {$_REQUEST['email']}
Message: {$_REQUEST['message']}EOT;
Comme au bon vieux temps du global_register.
Et on n'hésite pas à utiliser filter: http://fr3.php.net/filter
Certes, la seule bonne idée du message.
Si la sécurité d'une application est uniquement basée sur le fait que
c'est un GET plutôt qu'un POST ou le contraire, alors cette application
n'a aucune réelle mesure de sécurité.
Je cherche le mot "uniquement" dans ma réponse. Il s'agit d'un simple
premier pas vers un peu plus de sécurité, et je ne parle pas forcément
de protection contre une attaque quelconque.
En utilisant $_REQUEST, on dépend de l'ordre défini dans variables_order
(par défaut Environment, GET, POST, Cookie, Server) et cela peut
engendrer des soucis de fonctionnement sur un site.
Si la sécurité d'une application est uniquement basée sur le fait que
c'est un GET plutôt qu'un POST ou le contraire, alors cette application
n'a aucune réelle mesure de sécurité.
Je cherche le mot "uniquement" dans ma réponse. Il s'agit d'un simple
premier pas vers un peu plus de sécurité, et je ne parle pas forcément
de protection contre une attaque quelconque.
En utilisant $_REQUEST, on dépend de l'ordre défini dans variables_order
(par défaut Environment, GET, POST, Cookie, Server) et cela peut
engendrer des soucis de fonctionnement sur un site.
Si la sécurité d'une application est uniquement basée sur le fait que
c'est un GET plutôt qu'un POST ou le contraire, alors cette application
n'a aucune réelle mesure de sécurité.
Je cherche le mot "uniquement" dans ma réponse. Il s'agit d'un simple
premier pas vers un peu plus de sécurité, et je ne parle pas forcément
de protection contre une attaque quelconque.
En utilisant $_REQUEST, on dépend de l'ordre défini dans variables_order
(par défaut Environment, GET, POST, Cookie, Server) et cela peut
engendrer des soucis de fonctionnement sur un site.
Voir à ce sujet les recommandations de l'OWASP (www.owasp.org).
Quelles sont celles qui interdisent l'usage de $_REQUEST ?
Voir à ce sujet les recommandations de l'OWASP (www.owasp.org).
Quelles sont celles qui interdisent l'usage de $_REQUEST ?
Voir à ce sujet les recommandations de l'OWASP (www.owasp.org).
Quelles sont celles qui interdisent l'usage de $_REQUEST ?
S'il y a certes une différence sémantique, elle n'a pas à influer sur la
façon de récupérer les paramètres envoyés par l'utilisateur,
et
l'application peut tout à fait savoir par différents moyens si elle est
dans le cas d'un GET ou d'un POST.
ni les implications en terme de sécurité que cela implique.
Une application dont la sécurité ne dépend que de l'usage d'une méthode
HTTP plutôt que d'une autre est une application sans réelle sécurité.
Absolument pas, puisque l'espace de nommage est différent : $toto vs
$_REQUEST['toto']
Aucun risque d'utiliser $_REQUEST['toto'] par inadvertance dans un bout du
code comme variable « locale » (non dépendante de l'extérieure.
S'il y a certes une différence sémantique, elle n'a pas à influer sur la
façon de récupérer les paramètres envoyés par l'utilisateur,
et
l'application peut tout à fait savoir par différents moyens si elle est
dans le cas d'un GET ou d'un POST.
ni les implications en terme de sécurité que cela implique.
Une application dont la sécurité ne dépend que de l'usage d'une méthode
HTTP plutôt que d'une autre est une application sans réelle sécurité.
Absolument pas, puisque l'espace de nommage est différent : $toto vs
$_REQUEST['toto']
Aucun risque d'utiliser $_REQUEST['toto'] par inadvertance dans un bout du
code comme variable « locale » (non dépendante de l'extérieure.
S'il y a certes une différence sémantique, elle n'a pas à influer sur la
façon de récupérer les paramètres envoyés par l'utilisateur,
et
l'application peut tout à fait savoir par différents moyens si elle est
dans le cas d'un GET ou d'un POST.
ni les implications en terme de sécurité que cela implique.
Une application dont la sécurité ne dépend que de l'usage d'une méthode
HTTP plutôt que d'une autre est une application sans réelle sécurité.
Absolument pas, puisque l'espace de nommage est différent : $toto vs
$_REQUEST['toto']
Aucun risque d'utiliser $_REQUEST['toto'] par inadvertance dans un bout du
code comme variable « locale » (non dépendante de l'extérieure.
Là je suis d'accord qu'il y a potentiellement un problème si la commande
mail est sensible aux « buffer overflows » ou à l'envoi de caractères de
contrôle dans le corps du message : il faudrait soigneusement vérifier
chaque paramètre. Cela dit, mettre $_REQUEST['email'] dans $msg, c'est
quand même beaucoup moins risqué que de le mettre dans $mailheaders
comme le faisait Guytou77.
Là je suis d'accord qu'il y a potentiellement un problème si la commande
mail est sensible aux « buffer overflows » ou à l'envoi de caractères de
contrôle dans le corps du message : il faudrait soigneusement vérifier
chaque paramètre. Cela dit, mettre $_REQUEST['email'] dans $msg, c'est
quand même beaucoup moins risqué que de le mettre dans $mailheaders
comme le faisait Guytou77.
Là je suis d'accord qu'il y a potentiellement un problème si la commande
mail est sensible aux « buffer overflows » ou à l'envoi de caractères de
contrôle dans le corps du message : il faudrait soigneusement vérifier
chaque paramètre. Cela dit, mettre $_REQUEST['email'] dans $msg, c'est
quand même beaucoup moins risqué que de le mettre dans $mailheaders
comme le faisait Guytou77.
Pour ma part, je considère que c'est une énorme faille que de passer par
$_REQUEST, essentiellement lorsqu'il s'agit de données provenant d'un
formulaire utilisateur.
Si la sécurité d'une application est uniquement basée sur le fait que
c'est un GET plutôt qu'un POST ou le contraire, alors cette application
n'a aucune réelle mesure de sécurité.
Je cherche le mot "uniquement" dans ma réponse. Il s'agit d'un simple
premier pas vers un peu plus de sécurité,
et je ne parle pas forcément de protection contre une attaque quelconque.
En utilisant $_REQUEST, on dépend de l'ordre défini dans variables_order
(par défaut Environment, GET, POST, Cookie, Server) et cela peut
engendrer des soucis de fonctionnement sur un site.
Tous les gens qui croient corriger un problème de sécurité en changeant
un GET par un POST ne comprennent en général pas grand chose au réel
problème de sécurité sous-jacent.
Je recherche aussi le mot "corriger" dans ma réponse.
De nombreux autres frameworks ne font pas de différence entre GET et
POST (à juste raison). Ce qui me gêne davantage c'est la présence de
$_COOKIE dans $_REQUEST, et c'est marrant personne ne le mentionne :-)
Si la majorité avait raison, ça se saurait.
Pour ma part, je considère que c'est une énorme faille que de passer par
$_REQUEST, essentiellement lorsqu'il s'agit de données provenant d'un
formulaire utilisateur.
Si la sécurité d'une application est uniquement basée sur le fait que
c'est un GET plutôt qu'un POST ou le contraire, alors cette application
n'a aucune réelle mesure de sécurité.
Je cherche le mot "uniquement" dans ma réponse. Il s'agit d'un simple
premier pas vers un peu plus de sécurité,
et je ne parle pas forcément de protection contre une attaque quelconque.
En utilisant $_REQUEST, on dépend de l'ordre défini dans variables_order
(par défaut Environment, GET, POST, Cookie, Server) et cela peut
engendrer des soucis de fonctionnement sur un site.
Tous les gens qui croient corriger un problème de sécurité en changeant
un GET par un POST ne comprennent en général pas grand chose au réel
problème de sécurité sous-jacent.
Je recherche aussi le mot "corriger" dans ma réponse.
De nombreux autres frameworks ne font pas de différence entre GET et
POST (à juste raison). Ce qui me gêne davantage c'est la présence de
$_COOKIE dans $_REQUEST, et c'est marrant personne ne le mentionne :-)
Si la majorité avait raison, ça se saurait.
Pour ma part, je considère que c'est une énorme faille que de passer par
$_REQUEST, essentiellement lorsqu'il s'agit de données provenant d'un
formulaire utilisateur.
Si la sécurité d'une application est uniquement basée sur le fait que
c'est un GET plutôt qu'un POST ou le contraire, alors cette application
n'a aucune réelle mesure de sécurité.
Je cherche le mot "uniquement" dans ma réponse. Il s'agit d'un simple
premier pas vers un peu plus de sécurité,
et je ne parle pas forcément de protection contre une attaque quelconque.
En utilisant $_REQUEST, on dépend de l'ordre défini dans variables_order
(par défaut Environment, GET, POST, Cookie, Server) et cela peut
engendrer des soucis de fonctionnement sur un site.
Tous les gens qui croient corriger un problème de sécurité en changeant
un GET par un POST ne comprennent en général pas grand chose au réel
problème de sécurité sous-jacent.
Je recherche aussi le mot "corriger" dans ma réponse.
De nombreux autres frameworks ne font pas de différence entre GET et
POST (à juste raison). Ce qui me gêne davantage c'est la présence de
$_COOKIE dans $_REQUEST, et c'est marrant personne ne le mentionne :-)
Si la majorité avait raison, ça se saurait.
Patrick Mevzek a écrit :S'il y a certes une différence sémantique, elle n'a pas à influer sur la
façon de récupérer les paramètres envoyés par l'utilisateur,
Pourquoi, alors que ce sont deux concepts différents ?
et
l'application peut tout à fait savoir par différents moyens si elle est
dans le cas d'un GET ou d'un POST.
Non. Parce que les deux peuvent survenir en même temps.
<form action="article.php?id" method='post'>
<p>
<input type='hidden' name='action' value='delete' /> <!-- la
valeur du bouton peut dépendre de la localisation
on utilises donc un champ caché d'action -->
<input type='submit' value='Supprimer'/>
</p>
</form>
Si on considère que $_REQUEST['action'], alors il est possible pour
un attaquant de proposer le lien <article.php?id&actionÞlete>
Alors
je suis d'accord que l'internaute devrait faire attention à ce qu'il
clique, mais un mécanisme minimal de sécurité est de considérer
$_POST['action'].
Ensuite on peut bien sûr améliorer la sécurité avec un
système de jeton, si vraiment il faut blinder, surtout si les
ni les implications en terme de sécurité que cela implique.
Une application dont la sécurité ne dépend que de l'usage d'une méthode
HTTP plutôt que d'une autre est une application sans réelle sécurité.
La sécurité est un ensemble de bonnes pratiques.
Par exemple, pour
supprimer un article, il est souhaitable que le paramètre conduisant à
la suppression ne puisse pas être considéré s'il est un HTTP GET.
Sinon,
un lien dans un courriel frauduleux, ou dans un site piégé, pourrait
conduire à des suppressions ciblées.
C'est le genre de trous qui sont
souvent présents dans les panels d'administration.
Absolument pas, puisque l'espace de nommage est différent : $toto vs
$_REQUEST['toto']
Aucun risque d'utiliser $_REQUEST['toto'] par inadvertance dans un bout
du code comme variable « locale » (non dépendante de l'extérieure.
J'y vais certes un peu fort. Mais utiliser des données directement
venant de n'importe où me fait toujours sortir de mes gonds.
Patrick Mevzek a écrit :
S'il y a certes une différence sémantique, elle n'a pas à influer sur la
façon de récupérer les paramètres envoyés par l'utilisateur,
Pourquoi, alors que ce sont deux concepts différents ?
et
l'application peut tout à fait savoir par différents moyens si elle est
dans le cas d'un GET ou d'un POST.
Non. Parce que les deux peuvent survenir en même temps.
<form action="article.php?id" method='post'>
<p>
<input type='hidden' name='action' value='delete' /> <!-- la
valeur du bouton peut dépendre de la localisation
on utilises donc un champ caché d'action -->
<input type='submit' value='Supprimer'/>
</p>
</form>
Si on considère que $_REQUEST['action'], alors il est possible pour
un attaquant de proposer le lien <article.php?id&actionÞlete>
Alors
je suis d'accord que l'internaute devrait faire attention à ce qu'il
clique, mais un mécanisme minimal de sécurité est de considérer
$_POST['action'].
Ensuite on peut bien sûr améliorer la sécurité avec un
système de jeton, si vraiment il faut blinder, surtout si les
ni les implications en terme de sécurité que cela implique.
Une application dont la sécurité ne dépend que de l'usage d'une méthode
HTTP plutôt que d'une autre est une application sans réelle sécurité.
La sécurité est un ensemble de bonnes pratiques.
Par exemple, pour
supprimer un article, il est souhaitable que le paramètre conduisant à
la suppression ne puisse pas être considéré s'il est un HTTP GET.
Sinon,
un lien dans un courriel frauduleux, ou dans un site piégé, pourrait
conduire à des suppressions ciblées.
C'est le genre de trous qui sont
souvent présents dans les panels d'administration.
Absolument pas, puisque l'espace de nommage est différent : $toto vs
$_REQUEST['toto']
Aucun risque d'utiliser $_REQUEST['toto'] par inadvertance dans un bout
du code comme variable « locale » (non dépendante de l'extérieure.
J'y vais certes un peu fort. Mais utiliser des données directement
venant de n'importe où me fait toujours sortir de mes gonds.
Patrick Mevzek a écrit :S'il y a certes une différence sémantique, elle n'a pas à influer sur la
façon de récupérer les paramètres envoyés par l'utilisateur,
Pourquoi, alors que ce sont deux concepts différents ?
et
l'application peut tout à fait savoir par différents moyens si elle est
dans le cas d'un GET ou d'un POST.
Non. Parce que les deux peuvent survenir en même temps.
<form action="article.php?id" method='post'>
<p>
<input type='hidden' name='action' value='delete' /> <!-- la
valeur du bouton peut dépendre de la localisation
on utilises donc un champ caché d'action -->
<input type='submit' value='Supprimer'/>
</p>
</form>
Si on considère que $_REQUEST['action'], alors il est possible pour
un attaquant de proposer le lien <article.php?id&actionÞlete>
Alors
je suis d'accord que l'internaute devrait faire attention à ce qu'il
clique, mais un mécanisme minimal de sécurité est de considérer
$_POST['action'].
Ensuite on peut bien sûr améliorer la sécurité avec un
système de jeton, si vraiment il faut blinder, surtout si les
ni les implications en terme de sécurité que cela implique.
Une application dont la sécurité ne dépend que de l'usage d'une méthode
HTTP plutôt que d'une autre est une application sans réelle sécurité.
La sécurité est un ensemble de bonnes pratiques.
Par exemple, pour
supprimer un article, il est souhaitable que le paramètre conduisant à
la suppression ne puisse pas être considéré s'il est un HTTP GET.
Sinon,
un lien dans un courriel frauduleux, ou dans un site piégé, pourrait
conduire à des suppressions ciblées.
C'est le genre de trous qui sont
souvent présents dans les panels d'administration.
Absolument pas, puisque l'espace de nommage est différent : $toto vs
$_REQUEST['toto']
Aucun risque d'utiliser $_REQUEST['toto'] par inadvertance dans un bout
du code comme variable « locale » (non dépendante de l'extérieure.
J'y vais certes un peu fort. Mais utiliser des données directement
venant de n'importe où me fait toujours sortir de mes gonds.
Le 22/09/2008 16:05, Mickaël Wolff répondait à Freddy DISSAUX :Personnellement, je recommande chaudement l'utilisation de $_REQUEST
pour éviter les mélimélo $_GET/$_POST.
C'est que tu n'as pas compris la différence sémantique entre HTTP GET
et HTTP POST, ni les implications en terme de sécurité que cela implique.
Tiens, un marronnier...
Le 22/09/2008 16:05, Mickaël Wolff répondait à Freddy DISSAUX :
Personnellement, je recommande chaudement l'utilisation de $_REQUEST
pour éviter les mélimélo $_GET/$_POST.
C'est que tu n'as pas compris la différence sémantique entre HTTP GET
et HTTP POST, ni les implications en terme de sécurité que cela implique.
Tiens, un marronnier...
Le 22/09/2008 16:05, Mickaël Wolff répondait à Freddy DISSAUX :Personnellement, je recommande chaudement l'utilisation de $_REQUEST
pour éviter les mélimélo $_GET/$_POST.
C'est que tu n'as pas compris la différence sémantique entre HTTP GET
et HTTP POST, ni les implications en terme de sécurité que cela implique.
Tiens, un marronnier...