OVH Community, votre nouvel espace communautaire.

Error 403 Forbidden étrange …


lesjno
12/05/2016, 12h24
Oui, effectivement c'est dû au firewall OVH. Il est bien actif dans ma config (et je le laisse tel quel ...).
Cette page indique que ce firewall traite les injections SQL ... ce qui explique mon problème. :
https://www.ovh.com/fr/hebergement-web/mod_security.xml

Ca va tout de suite mieux en comprenant le phénomène :-)

Merci pour vos réponses !

cavo789
12/05/2016, 12h13
Le pare-feu ne peut pas présumer de l'utilisation qui sera faite derrière et le désactiver serait une très mauvaise idée.

Quand tu as des URLs "compliquées", le mieux est d'utiliser urlencode() (ou équivalent) et, aussi, de faire du POST.

(Ok pour "Aucun risque d'injection SQL" mais vérifie aussi que tu sois bien à l'abri d'une attaque XSS)

chmod777
12/05/2016, 12h10
Salut,

Essaie p-e de regarder dans ton .ovhconfig si le firewall est activé.
https://www.ovh.com/fr/g1175.format_du_point_ovhconfig

lesjno
12/05/2016, 12h00
L'exemple donné n'était qu'un exemple pour faire très simple.
Oui, j'ai développé le script moi même.
La chaine transmise n'est pas utilisée dans une requete SQL mais c'est vrai que ça y ressemble. Donc aucun risque d'injection SQL (risque que je prend en compte dans d'autres parties du programme, je vous rassure).
Je peux tout à fait vouloir transmettre une chaine du genre "appli.php?texte=to+be+or+no+to+be+that+is+the+que stion" et là j'ai le même problème ! (Essayez, vous verrez ! il suffit de changer le "or" en "orr" par exemple et ça passe ..).
Bien entendu il y a toujours moyen de contourner le problème... mais bon...

J'en conclus donc que c'est volontaire de la part d'OVH d’empêcher ce genre de chaine pour limiter le risque d'injection SQL (même s'il ne s'agit pas d'une requete)...

cavo789
12/05/2016, 10h15
Citation Envoyé par fritz2cat
As-tu un application firewall ?
Et si c'est le cas, surtout, garde-là ;-)

fritz2cat
12/05/2016, 10h14
As-tu un application firewall ? Car ce que tu envoies peut être détecté comme un SQL injection, en effet.

cavo789
12/05/2016, 10h09
Bonjour

Ton querystring me semble des plus étranges. C'est toi qui a programmé ce script ? Si oui, je te suggère de revoir ta manière d'envoyer des valeurs car, en l'état, tu me sembles très peu à l'abri d'attaques de type SQL injection ou XSS.

Si je comprends bien V1 est une variable dont la valeur est numérique.

Pourquoi ne fais-tu pas &V1=1 dans ton querystring ? Ainsi, tu pourrais valider derrière que la valeur qui est passée est strictement (et exclusivement) un chiffre. Tu apporterais une couche de protection au niveau de la lecture de tes valeurs.

Si tu acceptes de multiples valeurs, tu pourrais essayer &V1[]=1&V1[]=2
(ce sont des crochets [ ] derrière le V1)

Garde en tête la sécurité de ton application; c'est primordial ! La lecture des paramètres doit être fortement "castée" et dans l'exemple que je donne tu peux valider qu'il s'agit de chiffres.

Bonne journée.

lesjno
10/05/2016, 17h45
Bonjour,

J’ai une erreur 403 Forbidden très étrange pour laquelle j’ai besoin d’aide.
J’ai une appli php sur un serveur OVH mutualisé. L’URL est [https]://...xxx.../appli.php?param= …une chaine de caractères…
Lorsque param vaut « V1=1», j’ai donc l’URL : [https]://...xxx.../appli.php?param=V1=1
Dans ce cas tout fonctionne bien et j’obtiens bien la chaine « V1=1 » dans mon paramètre php $param.
Mais lorsque la chaine vaut « V1=1+OR+V1=2 », l’url est alors [https]://...xxx.../appli.php?param=V1=1+OR+V1=2 et là le serveur me renvoie l’erreur 403 Forbidden :
Forbidden
You don't have permission to access /ADV/listalertclient.php on this server.


Le plus étrange est que si je remplace « OR » par « OROR » alors ça passe et j’obtiens bien « V1=1 OROR V1=2 » dans ma variable !
Je suppose que le serveur analyse la chaine de caractère et considère qu’il s’agit d’une requete SQL car si je remplace OR par AND j’obtiens exactement le même phénomène alors que si je remplace OR par XX ça passe sans problème.
J’ai bien essayé avec urlencode mais c’est pareil.

Avez-vous déjà vu ce phénomène ? Que faut-il écrire pour que ça passe à tous les coups ?

Merci d’avance.