diff --git a/INSTALL.txt b/INSTALL.txt index a555128ee2496291c155f834cc7bc8e62694488e..e23b9d0b38340cd9613705965f030c8e99bfdaf5 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -144,6 +144,13 @@ INSTALLATION by the Drupal server process. You can change the name of this subdirectory at "Administer > Settings > File system settings". + SECURITY NOTICE: Certain Apache configurations can be vulnerable + to a security exploit allowing arbitrary code execution. Drupal + will attempt to automatically create a .htaccess file in your + "files" directory to protect you. If you already have a .htaccess + file in that location, please add the following line: + SetHandler This_is_a_Drupal_security_line_do_not_remove + You can now launch your browser and point it to your Drupal site. Create an account and login. The first account will automatically diff --git a/includes/file.inc b/includes/file.inc index 196d6c172ceaed654401ad16eaea82baffda42ba..252fec6a8b71acffca3ff075867b185e70d08b68 100644 --- a/includes/file.inc +++ b/includes/file.inc @@ -112,6 +112,18 @@ function file_check_directory(&$directory, $mode = 0, $form_item = NULL) { } } + if ((file_directory_path() == $directory || file_directory_temp() == $directory) && !is_file("$directory/.htaccess")) { + if (($fp = fopen("$directory/.htaccess", 'w')) && fputs($fp, 'SetHandler This_is_a_Drupal_security_line_do_not_remove')) { + fclose($fp); + } + else { + $message = t("Security warning: Couldn't write .htaccess. Please create a .htaccess file in your %directory directory which contains the following line: SetHandler This_is_a_Drupal_security_line_do_not_remove", array('%directory' => $directory)); + form_set_error($form_item, $message); + watchdog('file system', $message, WATCHDOG_ERROR); + } + } + + return true; }