Actions

Installation security hints/fr: Difference between revisions

From LimeSurvey Manual

m (Text replacement - " enclose="div"" to "")
(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...")
 
(34 intermediate revisions by the same user not shown)
Line 4: Line 4:
=Généralités=
=Généralités=


LimeSurvey relies on its own security, which is activated by default. The authors of this software take no responsibility and makes no claims regarding the appropriateness or security level of this software. However, we take security issues very seriously and react quickly. Therefore, if you know of any security problems within LimeSurvey, please let us know either by sending us an email to [mailto:info@limesurvey.org info@limesurvey.org] or by opening a bug report in 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é).


==Web server restriction==
==Restriction du serveur Web==


If you use apache, LimeSurvey include different htaccess file for restriction. verify you alow included htaccess with <code>AllowOverride</code>.
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> .


With other webserver or if you want to use <code>AllowOverride None</code> : you must
Avec un autre serveur web ou si vous souhaitez utiliser <code>AllowOverride None</code> : vous devez


* (option) disable access to all files in application, protected, framework and themes/*/views
* (option) désactiver l'accès à tous les fichiers de l'application, protégés, framework et thèmes/*/views
* disable access to file uploade by user /upload/surveys/.*/fu_[a-z0-9]
* désactiver l'accès au téléchargement de fichiers par l'utilisateur /upload/surveys/.*/fu_[a-z0-9]
* (option) disable access on executable file in upload directory
* (option) désactiver l'accès au fichier exécutable dans le répertoire de téléchargement


You can find a sample for nginx on our [[General_FAQ#With_nginx_webserver|General Faq]]
Vous pouvez trouver un exemple pour nginx sur notre [[General_FAQ#With_nginx_webserver|General Faq]]


==Permissions de fichiers sous Linux==
==Permissions de fichiers sous Linux==


If you are using a Linux server, setting file permissions accordingly is required to secure your LimeSurey installation.
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.


===Basic facts about Linux/*nix file permissions===
===Faits de base sur les autorisations de fichiers Linux/*nix===


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.
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.


<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>
<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>


'''Bear in mind 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.'''
'''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.'''


The web server (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) that make it possible to run LimeSurvey scripts with your personal user. Of course, the web server user must have the right to read LimeSurvey files. However, only a small subset of LimeSurvey sub-directories must be writable by the web server user.
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.


<div class="simplebox">[[File:help.png]] '''Hint''': it is very valuable to revoke write permission for the web server user to these LimeSurvey sub-directories 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>
<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>


===Setting file permissions on a self-managed Linux system===
===Définition des autorisations de fichiers sur un système Linux autogéré===


If you're managing your web server 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 may consider the following recommendations from below.
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.


You can first set the owner and group of your LimeSurvey files so that it will ease the file permissions setup. 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 web server group. Usually, this web server group only contains the web server account (and possibly another webmaster account). 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: <code>$ chown -R myaccount:apache limesurvey/</code>. Subsequently, set the file and sub-directories permissions.
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.


For the script to work properly, the write access to some directories is needed:
Pour que le script fonctionne correctement, l'accès en écriture à certains répertoires est nécessaire :
*The /limesurvey/application/config directory requires ''Read & Write'' for saving the application configuration settings
*Le répertoire /limesurvey/application/config nécessite "Lecture et écriture" pour enregistrer les paramètres de configuration de l'application
*The /limesurvey/tmp directory and its sub-directories are used for imports/uploads and should be set to ''Read & Write'' for your web server
*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 
*The upload/directory and all its sub-directories must also have set ''Read & Write'' permissions in order to enable pictures and media files upload
*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
* All other directories and files can be set to ''Read Only''
* Tous les autres répertoires et fichiers peuvent être définis en « Lecture seule »


<div class="simplebox">[[File:help.png]] '''Hint:''' supposing you've followed the recommendations above on owner/group, these settings can be applied by the following commands:
<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 :


<code>$ chmod -R o-r-w-x limesurvey/</code>
<code>$ chmod -R o-r-w-x limesurvey/</code>
Line 60: Line 60:
</div>
</div>


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


Giving the difficulty of a standard procedure to secure a web application on a hosted environment, it is rather difficult because hosted environments differ in 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.


In the managed server case, the server needs write access to some directories in order for the script to work properly:
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 web server
*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 web server in order to enable pictures 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 web server configuration, you will have to chmod the rights on the writable folders to 755 or 777 to make it writable for the web server. 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 other users' read access to config.php 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 web server process to write files to this directory, The rest of the 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 measures. 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 :


===SSL usage===
===Utilisation de SSL===
We generally recommend the usage of SSL for sensitive survey data. You usually enable SSL by configuring your web server correctly and using a SSQL certificate. If you have enabled SSL, you should enforce SSL all the time from the [[Global_settings|global settings]] of LimeSurvey. Additionally, you could only set to use 'secure' cookies by editing the [[Optional_settings|respective option]] in config.php.
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.


=== The access to the config.php file ===
=== L'accès au fichier config.php ===


{{Alert| You must update application/config/'''config.php''' only after the first installation is done and it works.}}  
{{Alerte| Vous devez mettre à jour application/config/'''config.php''' seulement une fois la première installation terminée et que cela fonctionne.}}  


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 (however, 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.
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.


Another way to secure this information can be to put the 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 (also known as public_html or www) folder. Basically, you will use config.php, but have one line in it - a line that includes the file with ACTUAL configuration information (ex: <code><?php return include("/home/hostfolder/safedata/configreal.php"); ?></code>). Remove all actual configuration information from /application/config/config.php and paste it into the other file (configreal.php) that is mentioned in the /application/config/'''config.php''' file. 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.  
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.  


This avoids having to change all the other files that include /application/config/config.php, since config.php 're-directs them' towards the configuration file that is located in a non-web directory which includes all the real configuration information. However, you will need to edit configreal.php and change the follow parameters to use absolute directory paths to work properly:
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">
<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>


Example:
Exemple:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
Line 115: 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 the one in which you installed LimeSurvey) and change default user name "admin" to whatever you prefer (e.g. "admin_xyz"). It will now be much harder to guess the 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 both of them with extreme caution.
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.




=== Content Security Policy (CSP) ===
=== Politique de sécurité du contenu (CSP) ===


'''DISCLAIMER - The CSP provided here is an example only and is not meant to used verbatim. It is meant as a starting point and you MUST adapt it to your needs and test it thoroughly.'''
'''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>
<nowiki><IfModule mod_headers.c>  
        Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; base-uri 'none'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i"
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>
</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>