Actions

Installation security hints/fr: Difference between revisions

From LimeSurvey Manual

(Created page with "=Généralités=")
(Created page with "'''AVERTISSEMENT - Le CSP fourni ici est uniquement un exemple et n'est pas destiné à être utilisé textuellement. Il s'agit d'un point de départ et vous DEVEZ l'adapter...")
 
(45 intermediate revisions by 4 users not shown)
Line 4: Line 4:
=Généralités=
=Généralités=


LimeSurvey relies on its own security system which is activated by default. The authors of this software takes no responsibility and makes no claims in relation to the appropriateness or secureness of this software. However we take security issues very serious and react quickly - if you know of any security problems with LimeSurvey please let us know: info@limesurvey.org or open a bug report at our [http://bugs.limesurvey.org bug tracker] (please mark it as private).
LimeSurvey s'appuie sur sa propre sécurité, activée par défaut. Les auteurs de ce logiciel n'assument aucune responsabilité et ne font aucune réclamation quant à l'adéquation ou au niveau de sécurité de ce logiciel. Cependant, nous prenons les questions de sécurité très au sérieux et réagissons rapidement. Par conséquent, si vous avez connaissance de problèmes de sécurité au sein de LimeSurvey, veuillez nous en informer soit en nous envoyant un e-mail à [mailto:info@limesurvey.org info@limesurvey.org], soit en ouvrant un rapport de bug dans notre [http:// bug tracker bugs.limesurvey.org] (veuillez le marquer comme privé).


==Linux file permissions==
==Restriction du serveur Web==


If you are using a Linux server, setting according file permissions is required to secure your LimeSurey installation.
Si vous utilisez Apache, LimeSurvey inclut différents fichiers htaccess à des fins de restriction. vérifiez que vous autorisez le htaccess inclus avec <code>AllowOverride</code> .


===Basic facts about Linux/*nix file permissions===
Avec un autre serveur web ou si vous souhaitez utiliser <code>AllowOverride None</code> : vous devez


A Linux/*nix operating system is multi-user. This means that, apart from your personal account, other user accounts may exist on the system and you should take care of what permissions you give to other users.
* (option) désactiver l'accès à tous les fichiers de l'application, protégés, framework et thèmes/*/views
* désactiver l'accès au téléchargement de fichiers par l'utilisateur /upload/surveys/.*/fu_[a-z0-9]
* (option) désactiver l'accès au fichier exécutable dans le répertoire de téléchargement


<div class="simplebox">[[File:help.png]] '''Hint:''' Setting file permissions is especially important in order to secure configuration files holding critical data such as passwords.</div>
Vous pouvez trouver un exemple pour nginx sur notre [[General_FAQ#With_nginx_webserver|General Faq]]


''Note however that the 'root' account will always be granted permission to access your files (no matter what file permissions you set) as it is the super-admin user.''
==Permissions de fichiers sous Linux==


The webserver (which runs LimeSurvey), is also running under a given identity (user). On Linux, this is usually the 'www','www-data' (on Debian/Ubuntu), 'apache' or 'nobody' user. However, some hosting companies use systems (such as suexec) which make it possible to run LimeSurvey scripts with your personal user. Of course the webserver user must have the right to read LimeSurvey files. However, only a small subset of LimeSurvey subdirectories must be writeable by the webserver user.
Si vous utilisez un serveur Linux, il est nécessaire de définir les autorisations de fichiers en conséquence pour sécuriser votre installation de LimeSurey.


<div class="simplebox">[[File:help.png]] '''Hint''': It is very valuable to revoke write permission for the webserver user to these LimeSurvey subdirectories that do not require it. Indeed, even if a LimeSurvey vulnerability might be discovered, the main files will still be protected from an illicit modification thanks to the file system permissions.</div>
===Faits de base sur les autorisations de fichiers Linux/*nix===


===Setting file permissions on a self-managed Linux system===
Un système d'exploitation Linux/*nix est multi-utilisateur. Cela signifie qu'outre votre compte personnel, d'autres comptes d'utilisateurs peuvent exister sur le système et vous devez faire attention aux autorisations que vous accordez aux autres utilisateurs.


If you're managing your webserver and operating system configuration (you are the owner of the physical server or are renting a virtual server on which you have root access), you can follow these recommendations.
<div class="simplebox">[[File:help.png]] '''Astuce :''' la définition des autorisations de fichiers est particulièrement importante afin de sécuriser les fichiers de configuration contenant des données critiques telles que les mots de passe.</div>


You can first set the owner and group of your LimeSurvey files so that it will ease the file permissions setup.
'''Gardez à l'esprit que le compte 'root' aura toujours l'autorisation d'accéder à vos fichiers (quelles que soient les autorisations de fichiers que vous définissez) car il s'agit de l'utilisateur super-administrateur.'''


A possible strategy is to set the owner of the LimeSurvey files to your personal username, and the group of the LimeSurvey files to the webserver group. Usually this webserver group only contains the webserver account (and possibly another webmaster account).
Le serveur Web (qui exécute LimeSurvey) fonctionne également sous une identité donnée (utilisateur). Sous Linux, il s'agit généralement de l'utilisateur « www », « www-data » (sur Debian/Ubuntu), « apache » ou « personne ». Cependant, certaines sociétés d'hébergement utilisent des systèmes (tels que suexec) qui permettent d'exécuter des scripts LimeSurvey avec votre utilisateur personnel. Bien entendu, l'utilisateur du serveur Web doit avoir le droit de lire les fichiers LimeSurvey. Cependant, seul un petit sous-ensemble de sous-répertoires LimeSurvey doit être accessible en écriture par l'utilisateur du serveur Web.


For instance if your username is 'myaccount' and the webserver user is 'apache' in the 'apache' group, then, from a shell access, you can use the following command:
<div class="simplebox">[[File:help.png]] '''Astuce''' : il est très utile de révoquer l'autorisation d'écriture de l'utilisateur du serveur Web sur ces sous-répertoires LimeSurvey qui n'en ont pas besoin. En effet, même si une vulnérabilité LimeSurvey était découverte, les fichiers principaux seront toujours protégés d'une modification illicite grâce aux permissions du système de fichiers.</div>


$ chown -R myaccount:apache limesurvey/
===Définition des autorisations de fichiers sur un système Linux autogéré===


Then set the file and subdirectories permissions.
Si vous gérez la configuration de votre serveur Web et de votre système d'exploitation (vous êtes propriétaire du serveur physique ou louez un serveur virtuel sur lequel vous disposez d'un accès root), vous pouvez prendre en compte les recommandations suivantes ci-dessous.


For the script to work properly it needs write access to some directories:
Vous pouvez d'abord définir le propriétaire et le groupe de vos fichiers LimeSurvey afin de faciliter la configuration des autorisations de fichiers. Une stratégie possible consiste à définir le propriétaire des fichiers LimeSurvey sur votre nom d'utilisateur personnel et le groupe de fichiers LimeSurvey sur le groupe du serveur Web. Habituellement, ce groupe de serveurs Web contient uniquement le compte du serveur Web (et éventuellement un autre compte webmaster). Par exemple, si votre nom d'utilisateur est « mon compte » et que l'utilisateur du serveur Web est « apache » dans le groupe « apache », alors, depuis un accès shell, vous pouvez utiliser la commande suivante : <code>$ chown -R myaccount:apache limesurvey/</code> . Ensuite, définissez les autorisations des fichiers et des sous-répertoires.
*The "/limesurvey/tmp" directory and its subdirectories are used for imports/uploads and should be set to ''Read & Write'' for your webserver.
*The upload/ directory and all its subdirectories must also have ''Read & Write'' for your webserver in order to enable picture and media files upload.
* All other directories and files can be set to ''Read Only''


<div class="simplebox">[[File:help.png]] '''Hint:''' Supposing you've followed the above recommendations on owner/group, these settings can be applied by the following commands:
Pour que le script fonctionne correctement, l'accès en écriture à certains répertoires est nécessaire :
*Le répertoire /limesurvey/application/config nécessite "Lecture et écriture" pour enregistrer les paramètres de configuration de l'application
*Le /limesurvey/ Le répertoire tmp et ses sous-répertoires sont utilisés pour les importations/téléchargements et doivent être définis sur « Lecture et écriture » pour votre serveur Web 
*Le répertoire/téléchargement et tous ses sous-répertoires doivent également avoir la valeur « Lecture » & Autorisations d'écriture afin de permettre le téléchargement d'images et de fichiers multimédias
* Tous les autres répertoires et fichiers peuvent être définis en « Lecture seule »


$ chmod -R o-r-w-x limesurvey/
<div class="simplebox">[[File:help.png]] '''Astuce :''' en supposant que vous ayez suivi les recommandations ci-dessus sur le propriétaire/groupe, ces paramètres peuvent être appliqués par les commandes suivantes :


$ chmod -R -w limesurvey/
<code>$ chmod -R o-r-w-x limesurvey/</code>


$ chmod -R 770 limesurvey/tmp
<code>$ chmod -R -w limesurvey/</code>


$ chmod -R 770 limesurvey/upload
<code>$ chmod -R 770 limesurvey/application/config</code>
 
<code>$ chmod -R 770 limesurvey/tmp</code>
 
<code>$ chmod -R 770 limesurvey/upload</code>


</div>
</div>


===Setting file permissions on a hosted webserver===
===Définition des autorisations de fichiers sur un serveur Web hébergé===


Giving a standard procedure to secure a web application on a hosted environment is rather difficult because hosted environments differ in so many ways.
Compte tenu de la difficulté d'une procédure standard pour sécuriser une application Web sur un environnement hébergé, elle est plutôt difficile car les environnements hébergés diffèrent à bien des égards.


As in the managed server case, for the script to work properly it needs write access to some directories:
Dans le cas du serveur géré, le serveur a besoin d'un accès en écriture à certains répertoires pour que le script fonctionne correctement :
*The "/limesurvey/tmp" directory is used for imports/uploads and should be set to ''Read & Write'' for your webserver.
*Le répertoire /limesurvey/tmp est utilisé pour les importations/téléchargements et doit être défini sur « Lecture et écriture ». ' pour votre serveur Web
*The upload/ directory and all its sub directories must also have ''Read & Write'' for your webserver in order to enable picture and media files upload.
*Le répertoire upload/et tous ses sous-répertoires doivent également avoir « Read & Write » pour votre serveur Web afin de permettre le téléchargement d'images et de fichiers multimédias
* The other directories and files should be set to ''Read Only''
* Les autres répertoires et les fichiers doivent être définis sur « Lecture seule »


<div class="simplebox">[[File:help.png]] '''Hint:'''
<div class="simplebox">[[File:help.png]] '''Astuce :'''
* Depending on your webserver configuration you will have to chmod the rights on the writable folders to 755 or 777 to make it writable for the webserver. Try 755 first - if it does not work 'upgrade' to 777.
* Selon la configuration de votre serveur web, vous devrez modifier les droits sur les dossiers inscriptibles en 755 ou 777 pour les rendre accessibles en écriture pour le web serveur. Essayez d'abord 755, si cela ne fonctionne pas, « mettez à niveau » vers 777
* You can also try to remove read access to config.php to others by setting this file's permissions to 750 - if it does not work 'upgrade' to 755.</div>
* Vous pouvez également essayer de supprimer l'accès en lecture d'autres utilisateurs à config.php en définissant les autorisations de ce fichier sur 750 - si cela ne fonctionne pas, « mettez à niveau ' au 755</div>


==Windows file permissions==
==Autorisations de fichiers Windows==


If you are using a windows server your should ensure that the admin folder allows the owner of the webserver process to write files to this directory, however all other files can be set to read-only and execute.
Si vous utilisez un serveur Windows, vous devez vous assurer que le dossier admin permet au propriétaire du processus du serveur Web d'écrire des fichiers dans ce répertoire. Le reste des fichiers peut être défini en lecture seule et exécuté.


==Other security issues==
==Autres problèmes de sécurité==


The following are recommendations only. LimeSurvey in general is very safe without these additional measure. If you however collect extremely sensitive data a little additional security can help:
Ce qui suit ne sont que des recommandations. LimeSurvey en général est très sûr sans ces mesures supplémentaires. Si vous collectez toutefois des données extrêmement sensibles, un peu de sécurité supplémentaire peut vous aider :


The /application/config/config.php file contains a user name and password for your database server. This poses certain security issues, particularly if you are using a login that has high level administrative access to your database. In the event of some error returning the content of this PHP file to a user's browser, your database password and other details could be compromised (please note, that this is a very unlikely scenario). The best way to minimize risk is to set up a specific login that has specific rights only to your limesurvey database.
===Utilisation de SSL===
Nous recommandons généralement l'utilisation de SSL pour les données d'enquête sensibles. Vous activez généralement SSL en configurant correctement votre serveur Web et en utilisant un certificat SSQL. Si vous avez activé SSL, vous devez appliquer SSL à tout moment à partir des [[Global_settings|global settings]] de LimeSurvey. De plus, vous ne pouvez configurer l'utilisation de cookies « sécurisés » qu'en modifiant les [[Optional_settings|option respective]] dans config.php.


Another way to secure this information can be to put the certain information from the /application/config/config.php file in a non-web directory, i.e. for Apache users this is the directory above the htdocs (aka public_html or www) folder. So you will use config.php, but have one line in it - a line that includes the file with ACTUAL configuration information (ex: <?php return include("/home/hostfolder/safedata/configreal.php"); ?>). Remove all actual configuration information from /application/config/config.php, and paste it into the other file (configreal.php) that is included by /application/config/config.php. This other file should be located in a non-Web directory. Then /application/config/config.php will not contain database passwords, etc. - just the name of the file that DOES contain the database info. This avoids having to change all the other files that include /application/config/config.php, since they can still include it, and it will include the real config information. However you will need to edit configreal.php and change the follow parameters
=== L'accès au fichier config.php ===


<syntaxhighlight lang="php" enclose="div">
{{Alerte| Vous devez mettre à jour application/config/'''config.php''' seulement une fois la première installation terminée et que cela fonctionne.}}
 
Le fichier /application/config/config.php contient un nom d'utilisateur et un mot de passe pour votre serveur de base de données. Cela pose certains problèmes de sécurité, en particulier si vous utilisez une connexion disposant d'un accès administratif de haut niveau à votre base de données. Dans le cas d'une erreur renvoyant le contenu de ce fichier PHP au navigateur d'un utilisateur, le mot de passe de votre base de données et d'autres détails pourraient être compromis (cependant, il s'agit d'un scénario très improbable). La meilleure façon de minimiser les risques est de configurer une connexion spécifique qui dispose de droits spécifiques uniquement sur votre base de données LimeSurvey.
 
Une autre façon de sécuriser ces informations peut être de placer les informations du fichier /application/config/config.php dans un répertoire non-web, c'est-à-dire pour les utilisateurs Apache, il s'agit du répertoire au-dessus du dossier htdocs (également connu sous le nom de public_html ou www). . Fondamentalement, vous utiliserez config.php, mais vous n'aurez qu'une seule ligne - une ligne qui inclut le fichier avec les informations de configuration RÉELLES (ex :<?php return include("/home/hostfolder/safedata/configreal.php"); ?> ). Supprimez toutes les informations de configuration réelles de /application/config/config.php et collez-les dans l'autre fichier (configreal.php) mentionné dans le fichier /application/config/'''config.php'''. Cet autre fichier doit être situé dans un répertoire non Web. Ensuite, /application/config/config.php ne contiendra pas les mots de passe de la base de données, etc. - juste le nom du fichier qui '''CONTIENT''' les informations de la base de données.
 
Cela évite d'avoir à modifier tous les autres fichiers qui incluent /application/config/config.php, puisque config.php les "redirige" vers le fichier de configuration qui se trouve dans un répertoire non-web qui comprend toutes les informations réelles de configuration. . Cependant, vous devrez modifier configreal.php et modifier les paramètres suivants pour utiliser les chemins de répertoire absolus pour fonctionner correctement :
 
<syntaxhighlight lang="php">


'basePath' => dirname(dirname('''FILE''')),
'basePath' => dirname(dirname('''FILE''')),
'runtimePath' => dirname(dirname(dirname('''FILE'''))).DIRECTORY_SEPARATOR.'tmp'.DIRECTORY_SEPARATOR.'runtime',
'runtimePath' => dirname(dirname(dirname('''FILE'''))).DIRECTORY_SEPARATOR.'tmp'. DIRECTORY_SEPARATOR.'runtime',
[...]
[...]


'urlManager' => array(
'urlManager' => array(
   [...]
[...]
   'rules' => require('routes.php'),
'rules' => require('routes.php'),
   [...]
[...]
);
);
</syntaxhighlight>
</syntaxhighlight>


to use absolute directory paths to work properly. Example:
Exemple:


<syntaxhighlight lang="php" enclose="div">
<syntaxhighlight lang="php">
'basePath' => '/var/www/htdocs/limesurvey',
'basePath' => '/var/www/htdocs/limesurvey',
'runtimePath' => '/var/www/htdocs/limesurvey/tmp/runtime',
'runtimePath' => '/var/www/htdocs/limesurvey/tmp/runtime',
Line 99: Line 115:


'urlManager' => array(
'urlManager' => array(
   [...]
[...]
   'rules' => require('/var/www/htdocs/limesurvey/config/routes.php'),
'rules' => require('/var/www/htdocs/limesurvey/config/routes.php'),
   [...]
[... ]
);
);
</syntaxhighlight>
</syntaxhighlight>


Also don't use "admin" as the default user. Go to your MySQL database (or other one if you installed LimeSurvey on different database) and change default user name "admin" to whatever you prefer (e.g. "admin_xyz"). It will be now much harder to guess administrator's new user name. Remember, this is one of the two variables intruders can use to gain access. The admin password is the other variable. So choose it with extreme care.
De plus, '''n'utilisez pas "admin" comme utilisateur par défaut'''. Accédez à votre base de données MySQL (ou celle dans laquelle vous avez installé LimeSurvey) et remplacez le nom d'utilisateur par défaut "admin" par celui de votre choix (par exemple "admin_xyz"). Il sera désormais beaucoup plus difficile de deviner le nouveau nom d'utilisateur de l'administrateur. N'oubliez pas qu'il s'agit de l'une des deux variables que les intrus peuvent utiliser pour accéder. Le mot de passe administrateur est l'autre variable. Choisissez donc les deux avec une extrême prudence.
 
 
=== Politique de sécurité du contenu (CSP) ===
 
'''AVERTISSEMENT - Le CSP fourni ici est uniquement un exemple et n'est pas destiné à être utilisé textuellement. Il s'agit d'un point de départ et vous DEVEZ l'adapter à vos besoins et le tester minutieusement.'''
<nowiki><IfModule mod_headers.c>
L'en-tête est toujours défini sur Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; base-uri 'aucun '; formulaire-action 'soi'; cadre-ancêtres 'soi'; mises à niveau-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i "
</IfModule></nowiki>

Latest revision as of 09:04, 2 October 2023

Généralités

LimeSurvey s'appuie sur sa propre sécurité, activée par défaut. Les auteurs de ce logiciel n'assument aucune responsabilité et ne font aucune réclamation quant à l'adéquation ou au niveau de sécurité de ce logiciel. Cependant, nous prenons les questions de sécurité très au sérieux et réagissons rapidement. Par conséquent, si vous avez connaissance de problèmes de sécurité au sein de LimeSurvey, veuillez nous en informer soit en nous envoyant un e-mail à info@limesurvey.org, soit en ouvrant un rapport de bug dans notre [http:// bug tracker bugs.limesurvey.org] (veuillez le marquer comme privé).

Restriction du serveur Web

Si vous utilisez Apache, LimeSurvey inclut différents fichiers htaccess à des fins de restriction. vérifiez que vous autorisez le htaccess inclus avec AllowOverride .

Avec un autre serveur web ou si vous souhaitez utiliser AllowOverride None : vous devez

  • (option) désactiver l'accès à tous les fichiers de l'application, protégés, framework et thèmes/*/views
  • désactiver l'accès au téléchargement de fichiers par l'utilisateur /upload/surveys/.*/fu_[a-z0-9]
  • (option) désactiver l'accès au fichier exécutable dans le répertoire de téléchargement

Vous pouvez trouver un exemple pour nginx sur notre General Faq

Permissions de fichiers sous Linux

Si vous utilisez un serveur Linux, il est nécessaire de définir les autorisations de fichiers en conséquence pour sécuriser votre installation de LimeSurey.

Faits de base sur les autorisations de fichiers Linux/*nix

Un système d'exploitation Linux/*nix est multi-utilisateur. Cela signifie qu'outre votre compte personnel, d'autres comptes d'utilisateurs peuvent exister sur le système et vous devez faire attention aux autorisations que vous accordez aux autres utilisateurs.

Astuce : la définition des autorisations de fichiers est particulièrement importante afin de sécuriser les fichiers de configuration contenant des données critiques telles que les mots de passe.

Gardez à l'esprit que le compte 'root' aura toujours l'autorisation d'accéder à vos fichiers (quelles que soient les autorisations de fichiers que vous définissez) car il s'agit de l'utilisateur super-administrateur.

Le serveur Web (qui exécute LimeSurvey) fonctionne également sous une identité donnée (utilisateur). Sous Linux, il s'agit généralement de l'utilisateur « www », « www-data » (sur Debian/Ubuntu), « apache » ou « personne ». Cependant, certaines sociétés d'hébergement utilisent des systèmes (tels que suexec) qui permettent d'exécuter des scripts LimeSurvey avec votre utilisateur personnel. Bien entendu, l'utilisateur du serveur Web doit avoir le droit de lire les fichiers LimeSurvey. Cependant, seul un petit sous-ensemble de sous-répertoires LimeSurvey doit être accessible en écriture par l'utilisateur du serveur Web.

Astuce : il est très utile de révoquer l'autorisation d'écriture de l'utilisateur du serveur Web sur ces sous-répertoires LimeSurvey qui n'en ont pas besoin. En effet, même si une vulnérabilité LimeSurvey était découverte, les fichiers principaux seront toujours protégés d'une modification illicite grâce aux permissions du système de fichiers.

Définition des autorisations de fichiers sur un système Linux autogéré

Si vous gérez la configuration de votre serveur Web et de votre système d'exploitation (vous êtes propriétaire du serveur physique ou louez un serveur virtuel sur lequel vous disposez d'un accès root), vous pouvez prendre en compte les recommandations suivantes ci-dessous.

Vous pouvez d'abord définir le propriétaire et le groupe de vos fichiers LimeSurvey afin de faciliter la configuration des autorisations de fichiers. Une stratégie possible consiste à définir le propriétaire des fichiers LimeSurvey sur votre nom d'utilisateur personnel et le groupe de fichiers LimeSurvey sur le groupe du serveur Web. Habituellement, ce groupe de serveurs Web contient uniquement le compte du serveur Web (et éventuellement un autre compte webmaster). Par exemple, si votre nom d'utilisateur est « mon compte » et que l'utilisateur du serveur Web est « apache » dans le groupe « apache », alors, depuis un accès shell, vous pouvez utiliser la commande suivante : $ chown -R myaccount:apache limesurvey/ . Ensuite, définissez les autorisations des fichiers et des sous-répertoires.

Pour que le script fonctionne correctement, l'accès en écriture à certains répertoires est nécessaire :

  • Le répertoire /limesurvey/application/config nécessite "Lecture et écriture" pour enregistrer les paramètres de configuration de l'application
  • Le /limesurvey/ Le répertoire tmp et ses sous-répertoires sont utilisés pour les importations/téléchargements et doivent être définis sur « Lecture et écriture » pour votre serveur Web 
  • Le répertoire/téléchargement et tous ses sous-répertoires doivent également avoir la valeur « Lecture » & Autorisations d'écriture afin de permettre le téléchargement d'images et de fichiers multimédias
  • Tous les autres répertoires et fichiers peuvent être définis en « Lecture seule »
Astuce : en supposant que vous ayez suivi les recommandations ci-dessus sur le propriétaire/groupe, ces paramètres peuvent être appliqués par les commandes suivantes :

$ chmod -R o-r-w-x limesurvey/

$ chmod -R -w limesurvey/

$ chmod -R 770 limesurvey/application/config

$ chmod -R 770 limesurvey/tmp

$ chmod -R 770 limesurvey/upload

Définition des autorisations de fichiers sur un serveur Web hébergé

Compte tenu de la difficulté d'une procédure standard pour sécuriser une application Web sur un environnement hébergé, elle est plutôt difficile car les environnements hébergés diffèrent à bien des égards.

Dans le cas du serveur géré, le serveur a besoin d'un accès en écriture à certains répertoires pour que le script fonctionne correctement :

  • Le répertoire /limesurvey/tmp est utilisé pour les importations/téléchargements et doit être défini sur « Lecture et écriture ». ' pour votre serveur Web
  • Le répertoire upload/et tous ses sous-répertoires doivent également avoir « Read & Write » pour votre serveur Web afin de permettre le téléchargement d'images et de fichiers multimédias
  • Les autres répertoires et les fichiers doivent être définis sur « Lecture seule »
Astuce :
  • Selon la configuration de votre serveur web, vous devrez modifier les droits sur les dossiers inscriptibles en 755 ou 777 pour les rendre accessibles en écriture pour le web serveur. Essayez d'abord 755, si cela ne fonctionne pas, « mettez à niveau » vers 777
  • Vous pouvez également essayer de supprimer l'accès en lecture d'autres utilisateurs à config.php en définissant les autorisations de ce fichier sur 750 - si cela ne fonctionne pas, « mettez à niveau ' au 755

Autorisations de fichiers Windows

Si vous utilisez un serveur Windows, vous devez vous assurer que le dossier admin permet au propriétaire du processus du serveur Web d'écrire des fichiers dans ce répertoire. Le reste des fichiers peut être défini en lecture seule et exécuté.

Autres problèmes de sécurité

Ce qui suit ne sont que des recommandations. LimeSurvey en général est très sûr sans ces mesures supplémentaires. Si vous collectez toutefois des données extrêmement sensibles, un peu de sécurité supplémentaire peut vous aider :

Utilisation de SSL

Nous recommandons généralement l'utilisation de SSL pour les données d'enquête sensibles. Vous activez généralement SSL en configurant correctement votre serveur Web et en utilisant un certificat SSQL. Si vous avez activé SSL, vous devez appliquer SSL à tout moment à partir des global settings de LimeSurvey. De plus, vous ne pouvez configurer l'utilisation de cookies « sécurisés » qu'en modifiant les option respective dans config.php.

L'accès au fichier config.php

Template:Alerte

Le fichier /application/config/config.php contient un nom d'utilisateur et un mot de passe pour votre serveur de base de données. Cela pose certains problèmes de sécurité, en particulier si vous utilisez une connexion disposant d'un accès administratif de haut niveau à votre base de données. Dans le cas d'une erreur renvoyant le contenu de ce fichier PHP au navigateur d'un utilisateur, le mot de passe de votre base de données et d'autres détails pourraient être compromis (cependant, il s'agit d'un scénario très improbable). La meilleure façon de minimiser les risques est de configurer une connexion spécifique qui dispose de droits spécifiques uniquement sur votre base de données LimeSurvey.

Une autre façon de sécuriser ces informations peut être de placer les informations du fichier /application/config/config.php dans un répertoire non-web, c'est-à-dire pour les utilisateurs Apache, il s'agit du répertoire au-dessus du dossier htdocs (également connu sous le nom de public_html ou www). . Fondamentalement, vous utiliserez config.php, mais vous n'aurez qu'une seule ligne - une ligne qui inclut le fichier avec les informations de configuration RÉELLES (ex :<?php return include("/home/hostfolder/safedata/configreal.php"); ?> ). Supprimez toutes les informations de configuration réelles de /application/config/config.php et collez-les dans l'autre fichier (configreal.php) mentionné dans le fichier /application/config/config.php. Cet autre fichier doit être situé dans un répertoire non Web. Ensuite, /application/config/config.php ne contiendra pas les mots de passe de la base de données, etc. - juste le nom du fichier qui CONTIENT les informations de la base de données.

Cela évite d'avoir à modifier tous les autres fichiers qui incluent /application/config/config.php, puisque config.php les "redirige" vers le fichier de configuration qui se trouve dans un répertoire non-web qui comprend toutes les informations réelles de configuration. . Cependant, vous devrez modifier configreal.php et modifier les paramètres suivants pour utiliser les chemins de répertoire absolus pour fonctionner correctement :

'basePath' => dirname(dirname('''FILE''')),
'runtimePath' => dirname(dirname(dirname('''FILE'''))).DIRECTORY_SEPARATOR.'tmp'. DIRECTORY_SEPARATOR.'runtime',
[...]

'urlManager' => array(
 [...]
 'rules' => require('routes.php'),
 [...]
);

Exemple:

'basePath' => '/var/www/htdocs/limesurvey',
'runtimePath' => '/var/www/htdocs/limesurvey/tmp/runtime',
[...]

'urlManager' => array(
 [...]
 'rules' => require('/var/www/htdocs/limesurvey/config/routes.php'),
 [... ]
);

De plus, n'utilisez pas "admin" comme utilisateur par défaut. Accédez à votre base de données MySQL (ou celle dans laquelle vous avez installé LimeSurvey) et remplacez le nom d'utilisateur par défaut "admin" par celui de votre choix (par exemple "admin_xyz"). Il sera désormais beaucoup plus difficile de deviner le nouveau nom d'utilisateur de l'administrateur. N'oubliez pas qu'il s'agit de l'une des deux variables que les intrus peuvent utiliser pour accéder. Le mot de passe administrateur est l'autre variable. Choisissez donc les deux avec une extrême prudence.


Politique de sécurité du contenu (CSP)

AVERTISSEMENT - Le CSP fourni ici est uniquement un exemple et n'est pas destiné à être utilisé textuellement. Il s'agit d'un point de départ et vous DEVEZ l'adapter à vos besoins et le tester minutieusement. <IfModule mod_headers.c> L'en-tête est toujours défini sur Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; base-uri 'aucun '; formulaire-action 'soi'; cadre-ancêtres 'soi'; mises à niveau-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i " </IfModule>