Есть ли какие-либо проблемы с безопасностью или эксплуатацией, если у меня нет файла.htaccess в корневом каталоге drupal?


Я понимаю, что наличие файла .htaccess в корне моей установки, вероятно, является способом запуска программы, но у меня возникли некоторые трудности с доступом к сайту, а затем я устранил проблему, удалив файл.htaccess в корне. Но затем это заставило меня задуматься, было ли хорошей идеей оставить мою установку Drupal 7 вообще без файла.htaccess в корневом каталоге.

Есть ли какие-либо проблемы с безопасностью или эксплуатацией, если у меня нет.htaccess файл в корне drupal? Я предполагаю, что мне пришлось бы вернуть его обратно, чтобы включить чистые URL-адреса.

Author: kiamlaluno, 2012-08-08

2 answers

У вас могут возникнуть некоторые проблемы, в зависимости от того, как настроен Apache.

Пользователи могут напрямую просматривать некоторые скрытые файлы. Посмотрите на строки 6 и 73 в файле.htaccess, чтобы увидеть, что он ограничивает.

Пользователи могут иметь возможность просматривать каталоги напрямую. См. строку 10.

Сайт может работать неправильно, если вы случайно разместили файл с именем index.html в корне. Строка 20 делает index.php основной файл.

Чистые URL-адреса не будут работать. Мне не 100% конечно, если кэш изображений тоже будет.

Возможно, есть некоторые проблемы с безопасностью PHP, но директивы php_flag являются стандартными настройками в php.ini уже несколько лет.

Вы находитесь на общем хостинге? Если это так, проблема с .htaccess может заключаться в строках Options. Некоторые хосты ограничивают их. Все остальное должно быть проверено с помощью директив <IfModule>.

Можно не иметь .htaccess в корневом каталоге документа, поместив содержимое в конфигурацию Apache для сайта, или в приложении. На сайтах большого объема это дает некоторый прирост производительности (.htaccess считывается при каждом запросе, где конфигурация Apache считывается один раз при запуске).

 5
Author: mpdonadio, 2012-08-08 13:35:40

Добавляя к тому, что сказал MPD, я думаю, что в файле .htacess, предоставленном Drupal, есть еще две важные части:

  • Кэширование файлов Drupal сообщает браузеру, какие файлы должны быть кэшированы и как долго.

    # Requires mod_expires to be enabled.
    <IfModule mod_expires.c>
      # Enable expirations.
      ExpiresActive On
    
      # Cache all files for 2 weeks after access (A).
      ExpiresDefault A1209600
    
      <FilesMatch \.php$>
        # Do not allow PHP scripts to be cached unless they explicitly send cache
        # headers themselves. Otherwise all scripts would have to overwrite the
        # headers set by mod_expires if they want another caching behavior. This may
        # fail if an error occurs early in the bootstrap process, and it may cause
        # problems if a non-Drupal PHP file is installed in a subdirectory.
        ExpiresActive Off
      </FilesMatch>
    </IfModule>
    
  • Обслуживание сжатых файлов JavaScript и CSS
    Drupal способен возвращать в браузер сжатые файлы.

    # Rules to correctly serve gzip compressed CSS and JS files.
    # Requires both mod_rewrite and mod_headers to be enabled.
    <IfModule mod_headers.c>
      # Serve gzip compressed CSS files if they exist and the client accepts gzip.
      RewriteCond %{HTTP:Accept-encoding} gzip
      RewriteCond %{REQUEST_FILENAME}\.gz -s
      RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
    
      # Serve gzip compressed JS files if they exist and the client accepts gzip.
      RewriteCond %{HTTP:Accept-encoding} gzip
      RewriteCond %{REQUEST_FILENAME}\.gz -s
      RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
    
      # Serve correct content types, and prevent mod_deflate double gzip.
      RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
      RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]
    
      <FilesMatch "(\.js\.gz|\.css\.gz)$">
        # Serve correct encoding type.
        Header set Content-Encoding gzip
        # Force proxies to cache gzipped & non-gzipped css/js files separately.
        Header append Vary Accept-Encoding
      </FilesMatch>
    </IfModule>
    

Эти директивы не защищают от проблем безопасности, но они повышают производительность Интернета сайт.
Вы можете поместить эти директивы в файл конфигурации, считываемый с http.conf, если у вас есть доступ к этим файлам.

Вообще говоря, удаление файла .htaccess из корневого каталога Drupal не является хорошей идеей, за исключением случаев, когда вы можете переместить эту директиву в другой файл.

 3
Author: kiamlaluno, 2012-08-08 14:02:56