Как я защищаю каталог загрузки изображения веб-сервера?

Один из способов - создать 2 временные таблицы, заполнить их, а затем объединить, чтобы создать финальную таблицу. Общие шаги и (не проверенный) код приведены ниже.

1) Создайте временные таблицы

CREATE TEMPORARY TABLE temp_table_1 (
   id INT,
   a DECIMAL(19,2)
)

INSERT INTO TABLE temp_table_1 VALUES (1, 3.0)
INSERT INTO TABLE temp_table_1 VALUES (2, 4.0)

CREATE TEMPORARY TABLE temp_table_2 (
   id INT,
   b DECIMAL(19,2),
   c DECIMAL(19,2)
)

INSERT INTO TABLE temp_table_2 VALUES (1, 1.0, 4.0)
INSERT INTO TABLE temp_table_2 VALUES (2, 2.0, 1.0)

2) Создайте свой финальный стол

CREATE TABLE table_1 
AS
SELECT t1.id, t1.a, t2.b, (t1.a - t1.b) / t2.c as d
FROM table_1 AS t1
JOIN table_2 AS t2 ON t1.id = t2.id
15
задан Cheekysoft 6 May 2009 в 09:01
поделиться

2 ответа

В этом контексте есть два возможных значения слова «исполняемый файл», и оба этих параметра необходимо настроить.

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

  2. Файл, который может быть прочитан и обработан как сценарий веб-сервером.

Обработка двоичного исполняемого файла

Для настройки на случай 1 в системе un * x Вы должны убедиться, что ваш каталог загрузки и файлы в нем принадлежат пользователю веб-сервера и доступны только для чтения этому пользователю. Каталог должен быть исполняемым; это означает, что файлы внутри этого каталога могут быть доступны). Если веб-пользователю необходимо перечислить файлы в каталоге, он также должен быть доступен для чтения. Конечно, он также должен быть доступен для записи, чтобы можно было создавать новые файлы.

Таким образом, восьмеричным набором, который вы хотите, будет

chown <web-server-user> <upload-dir>
chmod 0700 <upload-dir>

. Файлы не должны быть исполняемыми и должны быть доступны для чтения и записи только веб-сервером, поэтому они должны быть

chmod 0600 <uploaded-file>

. Обратите внимание, что это означает, что только Пользователь веб-сервера сможет увидеть эти файлы. Это лучшая ситуация для безопасности. Однако, если вам действительно нужны другие локальные пользователи, чтобы видеть эти файлы, используйте

chmod 0755 <upload-dir>
chmod 0644 <uploaded-file>

Обработка веб-сервера.

Кодирование для случая 2 зависит от веб-сервера.

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

Другой вариант - настроить веб-сервер так, чтобы он не разрешал обработку сценариев файлов в каталоге загрузки. Эта конфигурация зависит от веб-сервера. Однако, например, в Apache вы можете добиться этого, войдя в конфигурацию вашего сервера:

<Directory "path-to-upload-dir">
  AllowOverride None
  Options -ExecCGI
</Directory>

AllowOverride None не важен, так как он останавливает загрузку файла .htaccess в каталог загрузок и повторную настройку разрешений веб-сервера для этого. каталог.

22
ответ дан 1 December 2019 в 03:24
поделиться

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

Обратите внимание, что «выполнить» в каталогах означает «иметь доступ к файлам внутри каталога», поэтому это должно устанавливается, если вы хотите, чтобы ваш веб-сервер имел доступ к файлам внутри ...

0
ответ дан 1 December 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: