Base de connaissances
1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Ce guide détaille l'utilisation de scripts Perl ou Python sur Hébergements Web Infomaniak.
Préambule
- Les scripts Perl et Python sont souvent utilisés avec le module CGID d'Apache pour générer des contenus dynamiques sur les serveurs Web.
- Ce module permet à Apache de traiter les requêtes utilisant des scripts écrits en Perl ou Python via le protocole CGI (Common Gateway Interface), offrant ainsi la possibilité de créer des pages web interactives et réactives en fonction des interactions des utilisateurs avec le site.
- Cependant, pour des considérations de sécurité, Infomaniak a choisi de désactiver la capacité à exécuter des scripts écrits en Perl ou Python via ce module spécifique (CGID) d'Apache sur ses offres d'hébergement mutualisées.
- Par conséquent, il faut envisager de changer d'offre pour une offre de Serveur Cloud si vous êtes actuellement sur un hébergement Web mutualisé.
Utilisation des scripts
Voici des informations pratiques:
- L'emplacement (path) de l'interpréteur de python est
/usr/bin/python
. mod_python
n'est pas supporté.- L'exécution de scripts sans l'extension
pl
oucgi
n'est pas possible cependant un fichier.pl
peut exister et être appelé via une URL sans l'extension.
Si vous obtenez le message d'erreur suivant:
CGIWrap Error: Execution of this script not permitted
Execution of that script is not permitted for the following reason:
(1) Script file not found.
Request Data:Extra Path Info: /dossier/wwwdata/collection/vignettes/blabla.PL.12.34.56.gif
alors que le fichier chargé est une simple image GIF avec un nom de fichier de type "blabla.PL.12.34.56.gif
" cela vient du nom des fichiers en question. Pour contourner le problème, renommez simplement vos fichiers.
Ce guide indique comment modifier la directive error_reporting()
sur votre site Web.
Activer le rapport d'erreurs
Indiquez les 2 informations suivantes dans votre fichier .user.ini
:
display_errors=on
error_reporting=E_ALL & ~E_NOTICE & ~E_STRICT
Si votre navigateur n'affiche ni erreur ni avertissement c'est qu'il n'y en a pas.
Désactiver l'affichage d'erreurs PHP
Pour WordPress, éditez le fichier wp-config.php
et remplacez la ligne:
define('WP_DEBUG', false);
par :
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
Sinon, vous pouvez ajouter le code suivant dans le fichier .user.ini
:
display_errors=off
Ce guide concerne IonCube Loader, un module PHP qui permet de décoder les scripts PHP qui ont été encodés avec IonCube Encoder.
Préambule
- L'encodage IonCube est utilisé pour protéger le code source d'une application et empêcher la modification ou la distribution illégale de celui-ci.
- En utilisant IonCube Loader, les propriétaires de site peuvent garantir la sécurité de leur code et leur contenu tout en permettant une distribution en toute sécurité et facile de leurs applications.
Utiliser ionCube Loader
Avec un hébergement mutualisé il n'est plus proposé. Vous pouvez le vérifier depuis le tableau de bord:
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné:
- Cliquez sur Gérer sous Paramètres avancés:
- Cliquez sur l'onglet Extensions PHP.
- Cliquez sur ionCube Loader (si présent dans la liste) pour voir le détail:
- Ici il faut envisager un Serveur Cloud.
Ce guide concerne la configuration et la gestion de ModSecurity sur les serveurs Infomaniak. En comprenant ses limitations, restrictions et en gérant efficacement les erreurs, vous pouvez optimiser la sécurité de votre site tout en maintenant sa fonctionnalité.
Configuration par défaut
ModSecurity (mod_secure) est disponible et activé par défaut sur les serveurs Infomaniak. Cela signifie que toutes les requêtes HTTP seront soumises aux règles de sécurité définies par ModSecurity.
Il n'est pas possible de désactiver ModSecurity sur les serveurs Infomaniak. Le paramètre est global au serveur où votre site est hébergé, ce qui signifie que toutes les règles de sécurité définies seront appliquées à votre site.
Gestion des erreurs
Si le message d'erreur ModSecurity: Access denied with code 403 (phase 2). Operator EQ matched 0 at REQUEST_HEADERS. (...)
s'affiche au sujet de ModSecurity vous devriez vérifier qu'une langue par défaut soit bien configurée dans votre navigateur Web. Cette erreur peut parfois être causée par des paramètres de langue mal configurés dans le navigateur.
Ce guide détaille le header "X-Frame-Options" qui peut être utilisé dans le but de se protéger notamment d’attaque de clickjacking. Notez que le header "X-Frame-Options" peut ne pas être supporté par tous les navigateurs Web. Il est donc conseillé de le combiner avec d'autres méthodes pour renforcer la sécurité de votre site Web.
Valeurs possibles pour le header
‍Le header "X-Frame-Options" peut être défini pour empêcher un site Web d'être chargé dans un cadre ou une iframe. Il existe trois valeurs possibles pour ce header:
- "DENY": le site web ne peut pas être chargé dans un cadre ou une iframe
- "SAMEORIGIN": le site web peut être chargé dans un cadre ou une iframe seulement si la source du cadre ou de l'iframe appartient au même domaine que le site web
- "ALLOW-FROM uri": le site web peut être chargé dans un cadre ou une iframe uniquement à partir de l'URI spécifié
Vous pouvez définir ce header en ajoutant les lignes suivantes à votre fichier .htaccess:
Header set X-Frame-Options "DENY"
ou en utilisant la fonction header() de PHP car celui-ci est exécuté en FPM, de la même manière que lors de la désactivation du HSTS par exemple:
header('X-Frame-Options: DENY');
Remplacez "DENY" par la valeur souhaitée pour ce header.
Ce guide donne des informations sur le fichier robots.txt
créé par défaut pour les hébergement Web sur lesquels ce fichier est absent.
Préambule
- Le fichier
robots.txt
agit comme un guide pour les robots d'exploration des moteurs de recherche - Il est placé à la racine d'un site Web et contient des instructions spécifiques pour ces robots, indiquant quels répertoires ou pages ils sont autorisés à explorer et lesquels ils doivent ignorer
- Attention cependant, les robots peuvent choisir d'ignorer ces directives, en faisant du
robots.txt
un guide volontaire plutôt qu'une règle stricte
Contenu du fichier
Si le fichier robots.txt
est absent d'un site Infomaniak, un fichier du même nom est automatiquement généré avec les directives suivantes:
User-agent: *
Crawl-delay: 10
Ces directives indiquent aux robots d'espacer leurs requêtes de 10 secondes, ce qui évite de surcharger inutilement les serveurs.
Contourner le robots.txt créé par défaut
Il est possible de contourner le robots.txt en suivant ces étapes:
- Créez un fichier vide
robots.txt
(il servira uniquement d'emplacement pour que les règles ne s'appliquent pas). - Gérez la redirection du URI (Uniform Resource Identifier)
robots.txt
vers le fichier de votre choix Ă l'aide d'un fichier.htaccess
.
Exemple
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} /robots.txt$
RewriteRule ^robots\.txt$ index.php [QSA,L]
</IfModule>
Explication
- Le module
mod_rewrite
d'Apache est activé pour permettre les redirections. - La condition
RewriteCond %{REQUEST_URI} /robots.txt$
vérifie si la requête concerne le fichierrobots.txt
. - La règle
RewriteRule ^robots\.txt$ index.php [QSA,L]
redirige toutes les requĂŞtes versrobots.txt
versindex.php
, avec l'option[QSA]
qui conserve les paramètres de requête.
Il est recommandé de placer ces instructions au début du fichier .htaccess
.
Ce guide détaille l'usage de DELIMITER
pour créer des fonctions MySQL sur Serveur Cloud Infomaniak.
Préambule
- Lors de la création de fonctions ou de procédures stockées dans MySQL, il est crucial de comprendre le rôle des délimiteurs.
- L'utilisation correcte des délimiteurs est essentielle pour éviter les erreurs de syntaxe qui peuvent survenir en raison de la présence de plusieurs instructions SQL dans une seule définition de fonction ou de procédure.
Comprendre le Délimiteur
Un délimiteur est un caractère ou une séquence de caractères utilisés pour séparer les instructions SQL dans un script. Par défaut, MySQL utilise le point-virgule (;
) comme délimiteur. Cependant, lorsqu'on crée des fonctions, des procédures stockées ou des déclencheurs qui contiennent plusieurs instructions SQL, il est nécessaire de changer temporairement le délimiteur afin d'éviter des erreurs de syntaxe.
Lorsque vous créez une fonction, procédure ou déclencheur, vous avez souvent besoin d'utiliser plusieurs instructions SQL à l'intérieur du bloc BEGIN...END
. Le point-virgule (;
) étant également utilisé pour terminer ces instructions internes, MySQL pourrait interpréter le premier point-virgule comme la fin de la définition de la fonction, ce qui entraînerait une erreur de syntaxe. Pour contourner ce problème, vous devez changer le délimiteur pendant la définition de la fonction.
Créer une fonction simple en utilisant des délimiteurs personnalisés
Avant de définir la fonction, vous devez indiquer à MySQL que vous allez utiliser un autre délimiteur. Dans l'exemple ci-dessous, $$
est utilisé comme nouveau délimiteur:
DELIMITER $$
Avec le nouveau délimiteur en place, vous pouvez maintenant définir votre fonction. Le CREATE FUNCTION
inclut le corps de la fonction, où vous pouvez utiliser des instructions SQL internes séparées par des points-virgules sans que cela ne pose problème:
CREATE FUNCTION hello_world()
RETURNS TEXT
LANGUAGE SQL
BEGIN
RETURN 'Hello World';
END;
$$
Dans cet exemple :
CREATE FUNCTION hello_world()
: déclare le début de la définition de la fonctionhello_world
.RETURNS TEXT
: spécifie le type de données que la fonction retourne.LANGUAGE SQL
: indique que le langage utilisé pour la fonction est SQL.BEGIN ... END
: encapsule le code de la fonction. À l'intérieur, le point-virgule est utilisé pour séparer les instructions SQL.RETURN 'Hello World';
: instruction SQL qui renvoie la chaîne de caractèresHello World
.
Après avoir défini la fonction, remettre le délimiteur à son état par défaut (le point-virgule). Cela permet de continuer à exécuter les instructions SQL habituelles dans vos scripts suivants:
DELIMITER ;
Ce guide explique comment effectuer des transferts de fichiers entre Hébergement Web et/ou Serveur Cloud de façon sécurisée et simplifiée.
Préambule
- Le FXP (File eXchange Protocol) est une méthode de transfert de fichiers directement entre deux serveurs FTP sans que les données ne transitent par le client local.
- Utilisant les commandes FTP PORT et PASV, il permet d'établir une connexion entre les deux serveurs pour un transfert de fichiers plus rapide et efficace, économisant ainsi la bande passante.
- Cependant, cette méthode peut présenter des risques de sécurité si les connexions ne sont pas sécurisées par FTPS, et elle requiert une configuration plus complexe comparée aux transferts FTP traditionnels.
Transférer des données entre serveurs
FXP est activé par défaut sur les hébergements Web et Serveurs Cloud.
Vous pouvez par exemple employer CrossFTP, un logiciel multiplateforme permettant de faire du FXP (mais également du FTP, SFTP, WebDav, S3, OpenStack Swift).
Ce guide explique comment activer les fonctions suivantes sur Hébergement Web (en italique, Serveur Cloud uniquement):
proc_open
popen
exec()
shell_exec()
set_time_limit
passthru
system
Ces fonctions sont désactivées par défaut car elles représentent un risque de sécurité important en cas de piratage d'un site Web. Ne les activez qu'en cas de réel besoin (d'un script ou CMS ImageMagick, Typo3, CraftCMS, etc.).
Activer des fonctions PHP
Pour accéder à la gestion du site Web :
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné:
- Cliquez sur Gérer sous Paramètres avancés:
- Cliquez sur l'onglet PHP / Apache.
- Cliquez sur les boutons à bascule (toggle switch) On/Off comme désiré:
- Cliquez sur le bouton Enregistrer pour valider les modifications.
Ce guide explique comment modifier le mot de passe de gestion WordPress ou toute autre Application Web (Joomla, Drupal, Typo3, PrestaShop, ownCloud, etc.) installée via les outils Infomaniak inclus dans les offres d'Hébergement Web payantes.
Préambule
- Certaines applications permettent également un changement de mot de passe utilisateur directement depuis leur interface dédiée:
- Exemple: WordPress (gérer les utilisateurs, noms, mots de passe, rôles, etc.).
Modifier le mot de passe d'une app Web
Pour changer le mot de passe d'accès au panneau d'administration de votre application Web, effectuez les actions suivantes:
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné:
- Cliquez sur le menu d'action ⋮ situé à droite de l'Application Web concernée.
- Cliquez sur Paramètres de l'application:
- Cliquez sur Modifier Ă droite de l'Application:
- Sous Mot de passe entrez le nouveau mot de passe (pour la connexion avec l'identifiant indiqué au-dessus):
- Cliquez sur le bouton Enregistrer en bas de page.