TrogloGeek / prestashop-tggatos-module

TggAtos Module for Prestashop (1.4 to 1.7), ATOS SIPS 6xx payment gateway
61 stars 34 forks source link

Erreur 403 avec les URL simplifiées, déclenché par modules/tggatos/.htaccess #45

Closed ghost closed 8 years ago

ghost commented 8 years ago

Bonjour,

Je mets en place une boutique Prestashop 1.6, votre module tggatos 3.4.0 fonctionne bien en phase de développement. J'attaque la phase de mise en production de la boutique et dans ce cadre, j'active toutes les optimisations ainsi que la ré-écriture d'URL pour avoir les URL dites simplifiées, lors du règlement d'une commande, au clic sur le mode de paiement par carte bancaire (via votre module tggatos), j'arrive sur une page d'erreur 403 m'indiquant une interdiction d'accès. Après investigation, il s'avère que le fichier .htaccess dans le dossier racine de votre module en est directement responsable, puisqu'en le supprimant, le fonctionnement normal est rétabli. Je ne suis pas spécialiste en écriture de règle des fichiers .htaccess mais je devine qu'il interdit tout accès sauf aux fichiers logo.png, logo.gif et *.pub.php. Je dispose d'autres modules de paiement qui n'ont pas de ficheir .htaccess dans leur dossier racine et qui ne présente pas cette erreur. Que faudrait-il ajouter dans ce fichier pour qu'il ne soit pas bloquant lorsque les URL simplifiées de la boutique sont activées ?

Merci d'avance pour votre aide. Cordialement

TrogloGeek commented 8 years ago

Bonjour,

quelle version de PrestaShop ? 1.6 est la major version qui regroupe des versions plus ou moins fonctionnelles.

Pourriez-vous me lister quelques URLs posant problème ? Je n'ai pas le temps d'effectuer des tests de reproductibilité.

ghost commented 8 years ago

Merci de votre réactivité. Il s'agit d'une version 1.6.0.14. Pour mettre le site en production avec les URL simplifiées, j'ai du désactiver complètement le .htaccess du dossier tggatos. Le problème n'a donc plus lieu, mais le dossier n'est plus protégé, Ooops ! D'ici jeudi, une copie du site devrait être accessible pour tests. Je reviendrais vers vous dès que ce sera prêt. Cordialement

Le 02/02/2016 20:21, Damien VERON a écrit :

Bonjour,

quelle version de PrestaShop ? 1.6 est la major version qui regroupe des versions plus ou moins fonctionnelles.

Pourriez-vous me lister quelques URLs posant problème ? Je n'ai pas le temps d'effectuer des tests de reproductibilité.

— Reply to this email directly or view it on GitHub https://github.com/TrogloGeek/prestashop-tggatos-module/issues/45#issuecomment-178769175.

ghost commented 8 years ago

Bonjour,

La boutique en développement pour tests est disponible sur http://dev.habill-auto.com

L'admin est disponible à l'adresse http://dev.habill-auto.com/admindev avec l'identifiant test@ablink.com et le mot de passe testtest

L'URL posant problème: http://dev.habill-auto.com/modules/tggatos/payment?mode=1

Cette URL est le lien présent derrière le logo de paiement par carte bleue au moment du paiement d'une commande.

Peut-être qu'il ne fonctionnera pas si votre panier est vide, vous aurez alors besoin d'ajouter un produit au panier (n'importe lequel), vous inscrire comme client et valider la commande jusqu'à la page de paiement par carte (qui ne devrait pas s'afficher). Attention le système de paiement est actif, si vous arrivez à corriger le problème, ne payez pas 😏

Pour info, le contenu de quelques fichiers...

cat /modules/tggatos/.htaccess

Order Deny,AllowDeny from all<Files "logo.png"> Allow from all</Files><Files "logo.gif">    Allow from all</Files><Files "*.pub.php">   Allow from all</Files>

cat /.htaccess

## Default .htaccess file
# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution# http://www.prestashop.com - http://www.prestashop.com/forums
<IfModule mod_rewrite.c><IfModule mod_env.c>SetEnv HTTP_MOD_REWRITE On</IfModule>
RewriteEngine on

#Domain: dev.habill-auto.comRewriteRule . - [E=REWRITEBASE:/]RewriteRule ^api$ api/ [L]
RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
# ImagesRewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]# AlphaImageLoader for IE and fancyboxRewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]
# DispatcherRewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [NC,L]RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]</IfModule>
AddType application/vnd.ms-fontobject .eotAddType font/ttf .ttfAddType font/otf .otfAddType application/x-font-woff .woff<IfModule mod_headers.c>   <FilesMatch "\.(ttf|ttc|otf|eot|woff|svg)$">        Header add Access-Control-Allow-Origin "*"  </FilesMatch></IfModule>
<IfModule mod_expires.c>    ExpiresActive On    ExpiresByType image/gif "access plus 1 month"   ExpiresByType image/jpeg "access plus 1 month"  ExpiresByType image/png "access plus 1 month"   ExpiresByType text/css "access plus 1 week" ExpiresByType text/javascript "access plus 1 week"  ExpiresByType application/javascript "access plus 1 week"   ExpiresByType application/x-javascript "access plus 1 week" ExpiresByType image/x-icon "access plus 1 year" ExpiresByType image/svg+xml "access plus 1 year"    ExpiresByType image/vnd.microsoft.icon "access plus 1 year" ExpiresByType application/font-woff "access plus 1 year"    ExpiresByType application/x-font-woff "access plus 1 year"  ExpiresByType application/vnd.ms-fontobject "access plus 1 year"    ExpiresByType font/opentype "access plus 1 year"    ExpiresByType font/ttf "access plus 1 year" ExpiresByType font/otf "access plus 1 year" ExpiresByType application/x-font-ttf "access plus 1 year"   ExpiresByType application/x-font-otf "access plus 1 year"</IfModule>
<IfModule mod_headers.c>    Header unset Etag</IfModule>FileETag none<IfModule mod_deflate.c>   <IfModule mod_filter.c>     AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript font/ttf application/x-font-ttf font/otf application/x-font-otf font/opentype  </IfModule></IfModule>
#If rewrite mod isn't enabledErrorDocument 404 /index.php?controller=404
# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again

Subject: Re: [prestashop-tggatos-module] Erreur 403 avec les URL simplifiées, déclenché par modules/tggatos/.htaccess (#45) To: reply@reply.github.com From: oboumati@hotmail.com Date: Tue, 2 Feb 2016 23:54:27 +0100

Merci de votre réactivité. Il s'agit d'une version 1.6.0.14.

Pour mettre le site en production avec les URL simplifiées, j'ai du
désactiver complètement le .htaccess du dossier tggatos. Le problème
n'a donc plus lieu, mais le dossier n'est plus protégé, Ooops !

D'ici jeudi, une copie du site devrait être accessible pour tests.
Je reviendrais vers vous dès que ce sera prêt.

Cordialement

Le 02/02/2016 20:21, Damien VERON a
  écrit :

  Bonjour,

  quelle version de PrestaShop ? 1.6 est la major version qui
    regroupe des versions plus ou moins fonctionnelles.

  Pourriez-vous me lister quelques URLs posant problème ? Je n'ai
    pas le temps d'effectuer des tests de reproductibilité.

  —

    Reply to this email directly or view
      it on GitHub.
ghost commented 8 years ago

Un petit up... Y a plus personne ? Damien VERON ?

ghost commented 8 years ago

Bonjour à tous, N'y a-t-il donc vraiment personne pour gérer ce bug ? Désolé, mais je suis un peu obligé de faire du forcing ;-)

TrogloGeek commented 8 years ago

Bonjour,

pourriez-vous s'il vous plait me poster le contenu du .htaccess racine de la boutique en préservant les retours à la ligne dans un code block ?

C'est actuellement illisible et ayant très peu de temps actuellement à consacrer à ce module...

ghost commented 8 years ago

Voilà le .htaccess racine du site Cdt

## Default .htaccess file

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.com - http://www.prestashop.com/forums

<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>

RewriteEngine on

#Domain: dev.habill-auto.com
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]

RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/x-font-woff .woff
<IfModule mod_headers.c>
    <FilesMatch "\.(ttf|ttc|otf|eot|woff|svg)$">
        Header add Access-Control-Allow-Origin "*"
    </FilesMatch>
</IfModule>

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType text/javascript "access plus 1 week"
    ExpiresByType application/javascript "access plus 1 week"
    ExpiresByType application/x-javascript "access plus 1 week"
    ExpiresByType image/x-icon "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 year"
    ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
    ExpiresByType application/font-woff "access plus 1 year"
    ExpiresByType application/x-font-woff "access plus 1 year"
    ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
    ExpiresByType font/opentype "access plus 1 year"
    ExpiresByType font/ttf "access plus 1 year"
    ExpiresByType font/otf "access plus 1 year"
    ExpiresByType application/x-font-ttf "access plus 1 year"
    ExpiresByType application/x-font-otf "access plus 1 year"
</IfModule>

<IfModule mod_headers.c>
    Header unset Etag
</IfModule>
FileETag none
<IfModule mod_deflate.c>
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript font/ttf application/x-font-ttf font/otf application/x-font-otf font/opentype
    </IfModule>
</IfModule>

#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
TrogloGeek commented 8 years ago

Je n'ai pas pu reproduire sur une PS 1.6.0.14 et TggAtos 3.4.0 sous Apache 2.4 et je n'ai plus d'Apache 2.2 sous la main pour tester. Il faut vérifier les logs d'erreur Apache en augmentant la verbosité au besoin pour adapter le fichier .htaccess en conséquence.

ghost commented 8 years ago

Pourriez-vous m'orienter brièvement sur la façon d'activer la verbosité d'Apache? Merci. Cordialement

Le 6 mars 2016 21:48:00 GMT+01:00, Damien VERON notifications@github.com a écrit :

Je n'ai pas pu reproduire sur une PS 1.6.0.14 et TggAtos 3.4.0 sous Apache 2.4 et je n'ai plus d'Apache 2.2 sous la main pour tester. Il faut vérifier les logs d'erreur Apache en augmentant la verbosité au besoin pour adapter le fichier .htaccess en conséquence.


Reply to this email directly or view it on GitHub: https://github.com/TrogloGeek/prestashop-tggatos-module/issues/45#issuecomment-192987302

Envoyé de mon téléphone Android avec K-9 Mail. Excusez la brièveté.

TrogloGeek commented 8 years ago

Il faut utiliser la directive LogLevel https://httpd.apache.org/docs/2.4/fr/mod/core.html#loglevel

ghost commented 8 years ago

Bonnour,

Merci pour l'orientation. La seule ligne dans les logs d'erreur d'Apache est : "GET /modules/tggatos/payment?mode=1 HTTP/1.1" 403 813 "http://dev.habill-auto.com/commande?multi-shipping=" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36" Ce qui confirme que le fichier .htaccess dans le dossier racine de votre module interdit l'accès à l'URL demandée. Pour info, la configuration de prestashop concernant les URL est ainsi... image Le fichier .htaccess du module contient...

root:~# cat /...../modules/tggatos/.htaccess 
Order Deny,Allow
Deny from all
<Files "logo.png">
    Allow from all
</Files>
<Files "logo.gif">
    Allow from all
</Files>
<Files "*.pub.php">
    Allow from all
</Files>

Si je désactive les URL simplifiées (ce que je ne veux pas faire en production), la ligne de log est: "GET /index.php?mode=1&fc=module&module=tggatos&controller=payment HTTP/1.1" 200 17015 "http://dev.habill-auto.com/index.php?controller=order&multi-shipping=" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36" Que faut-il faire ?

mrsof commented 8 years ago

"GET /modules/tggatos/payment?mode=1 HTTP/1.1" 403 813 "http://dev.habill-auto.com/commande?multi-shipping=" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36"

M'est avis que ce soit du fichier "Access" log que cette ligne soit extraite et non pas du fichier "Errors". Ou alors votre fichier log contient les lignes combinées des erreurs et des accès. Vérifiez votre configuration apache, éventuellement séparez les fichiers log, et postez les dernières lignes du fichier "Errors logs". (ex: tail -20 /var/log/apache2/monvhost.error.log)

TrogloGeek commented 8 years ago

@mrsof m'a devancé dans la réponse, il s'agit effectivement ici d'un log d'accès, donc sans intérêt dans notre cas.

Cependant ce n'est pas à moi qu'il faut envoyer les informations de debug mais à l'administrateur du serveur pour qu'il préconise les changements à effectuer, soit au niveau configuration du serveur, soit sur le .htaccess. En effet, le fichier .htaccess fourni est un exemple, car il n'y a pas de règles passe-partout quand il s'agit de sécurité, il faut s'aligner sur la politique choisie par l'administrateur système.

Si vous n'avez pas d'administrateur système pour vous assister sur ce serveur, je peux intervenir pour auditer mais il s'agira en ce cas d'une prestation payante.

Cordialement, Damien VERON.