Actions

Installation security hints/ru: Difference between revisions

From LimeSurvey Manual

(Created page with "LimeSurvey опирается на собственную систему безопасности, которая по-умолчанию активирована. Автор...")
(Updating to match new version of source page)
 
(39 intermediate revisions by 3 users not shown)
Line 4: Line 4:
=Общее=
=Общее=


<div class="mw-translate-fuzzy">
LimeSurvey опирается на собственную систему безопасности, которая по-умолчанию активирована. Авторы данного программного обеспечения не несут никакой ответственности и не делают заявлений в отношении уместности или безопасности данной программы. Однако, мы подходим к вопросам безопасности довольно серьезно и быстро реагируем - если Вам известны проблемы в безопасности LimeSurvey, пожалуйста, дайте нам знать: info@limesurvey.org или заведите отчет об ошибке на нашем [http://bugs.limesurvey.org баг-трекере] (пожалуйста, отметьте его как частный).
LimeSurvey опирается на собственную систему безопасности, которая по-умолчанию активирована. Авторы данного программного обеспечения не несут никакой ответственности и не делают заявлений в отношении уместности или безопасности данной программы. Однако, мы подходим к вопросам безопасности довольно серьезно и быстро реагируем - если Вам известны проблемы в безопасности LimeSurvey, пожалуйста, дайте нам знать: info@limesurvey.org или заведите отчет об ошибке на нашем [http://bugs.limesurvey.org баг-трекере] (пожалуйста, отметьте его как частный).
</div>
==Web server restriction==


==Linux file permissions==
If you use apache, LimeSurvey include different htaccess file for restriction. verify you alow included htaccess with <code>AllowOverride</code>.


If you are using a Linux server, setting according file permissions is required to secure your LimeSurey installation.
With other webserver or if you want to use <code>AllowOverride None</code> : you must


===Basic facts about Linux/*nix file permissions===
* (option) disable access to all files in application, protected, framework and themes/*/views
* disable access to file uploade by user /upload/surveys/.*/fu_[a-z0-9]
* (option) disable access on executable file in upload directory


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.
You can find a sample for nginx on our [[General_FAQ#With_nginx_webserver|General Faq]]


<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>
==Права на файлы в Linux==


''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.''
<div class="mw-translate-fuzzy">
Если вы пользуетесь Linux сервером, то требуется настройка прав файлов для обеспечения безопасной установки LimeSurvey.
</div>


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.
===Основные сведения о правах на файлы в Linux/*nix===


<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>
Операционная система Linux/*nix - многопользовательская. Это означает, что кроме Вашей учетной записи другие пользователи могут параллельно с Вами находиться в системе и Вам необходимо позаботиться о правах которые Вы даете на файлы для других пользователей.


===Setting file permissions on a self-managed Linux system===
<div class="mw-translate-fuzzy">
<div class="simplebox">[[File:help.png]] '''Подсказка:''' Установка правильных прав доступа к файлам особенно важна для конфигурационных файлов, содержащих в себе критичные данные, такие как, например, пароли.</div>
</div>


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="mw-translate-fuzzy">
''При этом хочется отметить, что пользователь 'root' всегда сможет получить доступ к Вашим файлам (вне зависимости какие были выставлены права) т.к. это супер-администратор.''
</div>


You can first set the owner and group of your LimeSurvey files so that it will ease the file permissions setup.
<div class="mw-translate-fuzzy">
Web-сервер (на котором запущена LimeSurvey) обычно работает от учетной записи пользователя (user). В Linux, это обычно 'www','www-data' (в Debian/Ubuntu), 'apache' или 'nobody' пользователи. Однако, некоторые хостинг-компании используют системы (такие как suexec), которые запускают скрипты LimeSurvey от имени Вашего пользователя. Разумеется, пользователь от имени которого работает Web-сервер должен иметь право читать файлы LimeSurvey. В то же самое время лишь немногие каталоги должны быть доступны для записи Web-сервером.
</div>


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).
<div class="mw-translate-fuzzy">
<div class="simplebox">[[File:help.png]] '''Подсказка''': очень полезно явно запретить запись во все каталоги, куда Web-сервер и не должен иметь права записывать данные. В этом случае, даже если и будет обнаружена уязвимость LimeSurvey, то основные файлы будут защищены от несанкционированного изменения благодаря правам на файлы в файловой системе.</div>
</div>


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:
===Установка прав в управляемой системе Linux===


$ chown -R myaccount:apache limesurvey/
<div class="mw-translate-fuzzy">
Если Вы сами управляете Web-сервером и настраиваете операционную систему (Вы владелец физического сервера или арендатор виртуального сервера к которому у Вас есть 'root'-доступ), то Вам нужно следовать этим рекомендациям.
</div>


Then set the file and subdirectories permissions.
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.


For the script to work properly it needs write access to some directories:
<div class="mw-translate-fuzzy">
*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.
*"/limesurvey/tmp" директория и все подкаталоги используются для импорта/выгрузки файлов и должны быть настроены для ''Чтения и Записи'' Вашим Web-сервером.
* All other directories and files can be set to ''Read Only''
*Директория upload/ и все подкаталоги также должны быть настроены для ''Чтения и Записи'' Вашим Web-сервером, чтобы иметь возможность загружать картинки и media-файлы.
*Все остальные директории и файлы должны быть установлены в режим доступа ''Только чтение''
</div>


<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:
<div class="mw-translate-fuzzy">
<div class="simplebox">[[File:help.png]] '''Подсказка:''' для следования описанным рекомендациям можно выполнить следующие команды:
</div>


<div class="mw-translate-fuzzy">
$ chmod -R o-r-w-x limesurvey/
$ chmod -R o-r-w-x limesurvey/
</div>


<div class="mw-translate-fuzzy">
$ chmod -R -w limesurvey/
$ chmod -R -w limesurvey/
</div>


<div class="mw-translate-fuzzy">
$ chmod -R 770 limesurvey/tmp
$ chmod -R 770 limesurvey/tmp
</div>
<code>$ chmod -R 770 limesurvey/tmp</code>


<div class="mw-translate-fuzzy">
$ chmod -R 770 limesurvey/upload
$ chmod -R 770 limesurvey/upload
</div>
</div>
<div class="mw-translate-fuzzy">
===Настройка файловых разрешений на Web-сервере хостинга===
</div>


<div class="mw-translate-fuzzy">
Осуществить стандартную процедуру защиты Web-приложения в окружении хостинга довольно сложно, потому что окружения хостинга могут существенно отличаться.
</div>
</div>


===Setting file permissions on a hosted webserver===
<div class="mw-translate-fuzzy">
Для корректной работы скрипта необходимо, чтобы он имел доступ на запись в следующие директории:
*"/limesurvey/tmp" директория и все подкаталоги используются для импорта/выгрузки файлов и должны быть настроены для ''Чтения и Записи'' Вашим Web-сервером.
*Директория upload/ и все подкаталоги также должны быть настроены для ''Чтения и Записи'' Вашим Web-сервером, чтобы иметь возможность загружать картинки и media-файлы.
*Все остальные директории и файлы должны быть установлены в режим доступа ''Только чтение''
</div>


Giving a standard procedure to secure a web application on a hosted environment is rather difficult because hosted environments differ in so many ways.
<div class="mw-translate-fuzzy">
<div class="simplebox">[[File:help.png]] '''Подсказка:'''
*В зависимости от конфигурации Вашего Web-сервера будет необходимо выдать права 755 или 777, чтобы сделать возможным запись туда сервером. Сначала попробуйте 755 - если не сработает, то обновите на 777.
*Вы также можете убрать доступ на чтение с файла config.php для всех остальных установив на него права 750 - если ничего не работает, то попробуйте выставить 755.</div>
</div>


As in the managed server case, for the script to work properly it needs write access to some directories:
==Права доступа к файлам в Windows==
*The "/limesurvey/tmp" directory is used for imports/uploads and should be set to ''Read & Write'' for your webserver.
*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.
* The other directories and files should be set to ''Read Only''


<div class="simplebox">[[File:help.png]] '''Hint:'''
<div class="mw-translate-fuzzy">
* 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.
Если Вы используете Windows сервер, то необходимо убедиться, что каталог admin разрешен для записи процессом Web-сервера, при этом на все остальные файлы могут действовать разрешения только на чтение и выполнение.
* 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>
</div>


==Windows file permissions==
==Прочие вопросы безопасности==


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.
<div class="mw-translate-fuzzy">
Ниже были приведены только рекомендации. Сама по себе LimeSurvey и так довольно безопасная система, даже без применения указанных мер. Однако, если Вы обрабатываете исключительно конфиденциальные данные, то безопасности никогда не бывает мало и следующее должно Вам помочь:
</div>


==Other security issues==
===SSL usage===
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.


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:
<div class="mw-translate-fuzzy">
===Доступ к config.php===
</div>


=== Access of config.php file ===
<div class="mw-translate-fuzzy">
{{Alert|Вы должны обновить application/config/config.php только когда все установлено и работает. Вы должны обновить следующие config.php файлы.}}
</div>


{{Alert|You must update application/config/config.php only after first installation is done and work. You have to update existing config.php file.}}
<div class="mw-translate-fuzzy">
/application/config/config.php - файл содержит имя пользователя и пароль к базе данных Вашего сервера. Вы рискуете заполучить определенные проблемы безопасности, если в данном файле указан пользователь с высоким уровнем административных прав к Вашей базе. В случае возникновения каких либо ошибок, содержимое данного файла может быть отображено на экране браузера, и конфиденциальные данные могут быть скомпрометированы(хотя, это маловероятный сценарий). Лучшим вариантом будет указать в данном файле пользователя, который имеет полномочия лишь внутри базы данных limesurvey.
</div>


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.
<div class="mw-translate-fuzzy">
Другим способом дополнительно обезопасить данную систему может быть расположение информации находящейся в файле /application/config/config.php не в Web-директории, т.е. для пользователя Apache эта директория будет находиться выше каталога htdocs (или public_html или www). Таким образом Вы сможете использовать config.php, но с одной единственной строкой в нем - которая подключает актуальную конфигурацию из внешнего источника (например: <?php return include("/home/hostfolder/safedata/configreal.php"); ?>). Удалите всю актуальную конфигурационную информацию из /application/config/config.php и вставьте ее в другой файл (configreal.php), который в свою очередь подключается в файле /application/config/config.php. Подключаемый файл не должен находиться в Web-директории. Таким образом непосредственно в самом файле /application/config/config.php больше не будут храниться конфиденциальные данные, а лишь имя файла, где это содержится на самом деле. Данная манипуляция позволяет избежать необходимости изменять все файлы, которые подключают /application/config/config.php. При этом, Вам необходимо будет отредактировать файл configreal.php и изменить в нем следующие параметры
</div>


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


<div class="mw-translate-fuzzy">
<syntaxhighlight lang="php" enclose="div">
<syntaxhighlight lang="php" enclose="div">
</div>


'basePath' => dirname(dirname('''FILE''')),
'basePath' => dirname(dirname('''FILE''')),
Line 89: Line 148:


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


to use absolute directory paths to work properly. Example:
<div class="mw-translate-fuzzy">
чтобы использовать абсолютные пути к каталогам, чтобы все работало должным образом.
Пример:
</div>


<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 103: Line 165:


'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.
<div class="mw-translate-fuzzy">
Также не используйте "admin" пользователем по-умолчанию. Отправляйтесь в Вашу MySQL базу данных (или другую, если Вы развернули LimeSurvey на какой либо другой базе) и измените имя пользователя по-умолчанию "admin" на какое угодно (например "admin_xyz"). Теперь подобрать имя пользователя администратора будет гораздо сложнее. Пароль администратора - это другая переменная. Выбирайте его с особой тщательностью.
</div>
 
 
=== Content Security Policy (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.'''
<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"
</IfModule></nowiki>

Latest revision as of 21:37, 17 February 2022

__ОГЛАВЛЕНИЕ__

Общее

LimeSurvey опирается на собственную систему безопасности, которая по-умолчанию активирована. Авторы данного программного обеспечения не несут никакой ответственности и не делают заявлений в отношении уместности или безопасности данной программы. Однако, мы подходим к вопросам безопасности довольно серьезно и быстро реагируем - если Вам известны проблемы в безопасности LimeSurvey, пожалуйста, дайте нам знать: info@limesurvey.org или заведите отчет об ошибке на нашем баг-трекере (пожалуйста, отметьте его как частный).

Web server restriction

If you use apache, LimeSurvey include different htaccess file for restriction. verify you alow included htaccess with AllowOverride.

With other webserver or if you want to use AllowOverride None : you must

  • (option) disable access to all files in application, protected, framework and themes/*/views
  • disable access to file uploade by user /upload/surveys/.*/fu_[a-z0-9]
  • (option) disable access on executable file in upload directory

You can find a sample for nginx on our General Faq

Права на файлы в Linux

Если вы пользуетесь Linux сервером, то требуется настройка прав файлов для обеспечения безопасной установки LimeSurvey.

Основные сведения о правах на файлы в Linux/*nix

Операционная система Linux/*nix - многопользовательская. Это означает, что кроме Вашей учетной записи другие пользователи могут параллельно с Вами находиться в системе и Вам необходимо позаботиться о правах которые Вы даете на файлы для других пользователей.

Подсказка: Установка правильных прав доступа к файлам особенно важна для конфигурационных файлов, содержащих в себе критичные данные, такие как, например, пароли.

При этом хочется отметить, что пользователь 'root' всегда сможет получить доступ к Вашим файлам (вне зависимости какие были выставлены права) т.к. это супер-администратор.

Web-сервер (на котором запущена LimeSurvey) обычно работает от учетной записи пользователя (user). В Linux, это обычно 'www','www-data' (в Debian/Ubuntu), 'apache' или 'nobody' пользователи. Однако, некоторые хостинг-компании используют системы (такие как suexec), которые запускают скрипты LimeSurvey от имени Вашего пользователя. Разумеется, пользователь от имени которого работает Web-сервер должен иметь право читать файлы LimeSurvey. В то же самое время лишь немногие каталоги должны быть доступны для записи Web-сервером.

Подсказка: очень полезно явно запретить запись во все каталоги, куда Web-сервер и не должен иметь права записывать данные. В этом случае, даже если и будет обнаружена уязвимость LimeSurvey, то основные файлы будут защищены от несанкционированного изменения благодаря правам на файлы в файловой системе.

Установка прав в управляемой системе Linux

Если Вы сами управляете Web-сервером и настраиваете операционную систему (Вы владелец физического сервера или арендатор виртуального сервера к которому у Вас есть 'root'-доступ), то Вам нужно следовать этим рекомендациям.

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: $ chown -R myaccount:apache limesurvey/. Subsequently, set the file and sub-directories permissions.

Для корректной работы скрипта необходимо чтобы он имел возможность записи в некоторые директории:

  • "/limesurvey/tmp" директория и все подкаталоги используются для импорта/выгрузки файлов и должны быть настроены для Чтения и Записи Вашим Web-сервером.
  • Директория upload/ и все подкаталоги также должны быть настроены для Чтения и Записи Вашим Web-сервером, чтобы иметь возможность загружать картинки и media-файлы.
  • Все остальные директории и файлы должны быть установлены в режим доступа Только чтение
Подсказка: для следования описанным рекомендациям можно выполнить следующие команды:

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

$ chmod -R -w limesurvey/

$ chmod -R 770 limesurvey/tmp

$ chmod -R 770 limesurvey/tmp

$ chmod -R 770 limesurvey/upload

Настройка файловых разрешений на Web-сервере хостинга

Осуществить стандартную процедуру защиты Web-приложения в окружении хостинга довольно сложно, потому что окружения хостинга могут существенно отличаться.

Для корректной работы скрипта необходимо, чтобы он имел доступ на запись в следующие директории:

  • "/limesurvey/tmp" директория и все подкаталоги используются для импорта/выгрузки файлов и должны быть настроены для Чтения и Записи Вашим Web-сервером.
  • Директория upload/ и все подкаталоги также должны быть настроены для Чтения и Записи Вашим Web-сервером, чтобы иметь возможность загружать картинки и media-файлы.
  • Все остальные директории и файлы должны быть установлены в режим доступа Только чтение
Подсказка:
  • В зависимости от конфигурации Вашего Web-сервера будет необходимо выдать права 755 или 777, чтобы сделать возможным запись туда сервером. Сначала попробуйте 755 - если не сработает, то обновите на 777.
  • Вы также можете убрать доступ на чтение с файла config.php для всех остальных установив на него права 750 - если ничего не работает, то попробуйте выставить 755.

Права доступа к файлам в Windows

Если Вы используете Windows сервер, то необходимо убедиться, что каталог admin разрешен для записи процессом Web-сервера, при этом на все остальные файлы могут действовать разрешения только на чтение и выполнение.

Прочие вопросы безопасности

Ниже были приведены только рекомендации. Сама по себе LimeSurvey и так довольно безопасная система, даже без применения указанных мер. Однако, если Вы обрабатываете исключительно конфиденциальные данные, то безопасности никогда не бывает мало и следующее должно Вам помочь:

SSL usage

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 of LimeSurvey. Additionally, you could only set to use 'secure' cookies by editing the respective option in config.php.

Доступ к config.php

  Вы должны обновить application/config/config.php только когда все установлено и работает. Вы должны обновить следующие config.php файлы.


/application/config/config.php - файл содержит имя пользователя и пароль к базе данных Вашего сервера. Вы рискуете заполучить определенные проблемы безопасности, если в данном файле указан пользователь с высоким уровнем административных прав к Вашей базе. В случае возникновения каких либо ошибок, содержимое данного файла может быть отображено на экране браузера, и конфиденциальные данные могут быть скомпрометированы(хотя, это маловероятный сценарий). Лучшим вариантом будет указать в данном файле пользователя, который имеет полномочия лишь внутри базы данных limesurvey.

Другим способом дополнительно обезопасить данную систему может быть расположение информации находящейся в файле /application/config/config.php не в Web-директории, т.е. для пользователя Apache эта директория будет находиться выше каталога htdocs (или public_html или www). Таким образом Вы сможете использовать config.php, но с одной единственной строкой в нем - которая подключает актуальную конфигурацию из внешнего источника (например: <?php return include("/home/hostfolder/safedata/configreal.php"); ?>). Удалите всю актуальную конфигурационную информацию из /application/config/config.php и вставьте ее в другой файл (configreal.php), который в свою очередь подключается в файле /application/config/config.php. Подключаемый файл не должен находиться в Web-директории. Таким образом непосредственно в самом файле /application/config/config.php больше не будут храниться конфиденциальные данные, а лишь имя файла, где это содержится на самом деле. Данная манипуляция позволяет избежать необходимости изменять все файлы, которые подключают /application/config/config.php. При этом, Вам необходимо будет отредактировать файл configreal.php и изменить в нем следующие параметры

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:

</div>

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

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

чтобы использовать абсолютные пути к каталогам, чтобы все работало должным образом. Пример:

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

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

Также не используйте "admin" пользователем по-умолчанию. Отправляйтесь в Вашу MySQL базу данных (или другую, если Вы развернули LimeSurvey на какой либо другой базе) и измените имя пользователя по-умолчанию "admin" на какое угодно (например "admin_xyz"). Теперь подобрать имя пользователя администратора будет гораздо сложнее. Пароль администратора - это другая переменная. Выбирайте его с особой тщательностью.


Content Security Policy (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.

<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"
</IfModule>