LINUX.ORG.RU

История изменений

Исправление Black_Roland, (текущая версия) :

Как это понять писать в весь проэкт ? не пойму не много. У меня там права на все файлы 0644, и на папку с картинками только 0755 куда они закачиваются, и все. Остальное пишется в базу.

Ну вот у тебя тоже по всему проекту можно писать. На все файлы, кроме директории с картинками нужны права только на чтение (550/440). Нужно для того, чтобы у взломщика не было права редактировать код проекта, либо код фреймворка.

При этом все равно можно залить посторонний код в директорию с картинками. Если у сайта единая точка входа (в большинстве случаев так и есть, исключение Битрикс, например), то нужно разрешить выполнять код только этого файла, а все остальные .php запретить. Например так:

# Редирект запросов на единую точку входа — /index.php
location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

# Перенаправлять /index.php в PHP-FPM
location /index.php {
    fastcgi_pass  unix:/something.sock;
    ...
}

# PHP-скрипты кроме /index.php теперь не выпоняются, но скачиваются, т.е. будет видно код php-файлов. Заодно блокируем файлы Git.
location ~ (\.php|\.git.*)$ {
    return 403;
}

Если так настроить, то залитый в картинки .php файл не выполнится — получим 403.

Исправление Black_Roland, :

Как это понять писать в весь проэкт ? не пойму не много. У меня там права на все файлы 0644, и на папку с картинками только 0755 куда они закачиваются, и все. Остальное пишется в базу.

Ну вот у тебя тоже по всему проекту можно писать. На все файлы, кроме директории с картинками нужны права только на чтение (550/440). Нужно для того, чтобы у взломщика не было права редактировать код проекта, либо код фреймворка.

При этом все равно можно залить посторонний код в директорию с картинками. Если у сайта единая точка входа (в большинстве случаев так и есть, исключение Битрикс, например), то нужно разрешить выполнять код только этого файла, а все остальные .php запретить. Например так:

# Редирект запросов на единую точку входа — /index.php
location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

# Перенаправлять /index.php в PHP-FPM
location /index.php {
    fastcgi_pass  unix:/something.sock;
    ...
}

# PHP-скрипты кроме /index.php теперь не выпоняются, но скачиваются, т.е. будет видно код php-файлов. Блокируем, заодно блокируем файлы Git.
location ~ (\.php|\.git.*)$ {
    return 403;
}

Если так настроить, то залитый в картинки .php файл не выполнится — получим 403.

Исходная версия Black_Roland, :

Как это понять писать в весь проэкт ? не пойму не много. У меня там права на все файлы 0644, и на папку с картинками только 0755 куда они закачиваются, и все. Остальное пишется в базу.

Ну вот у тебя тоже по всему проекту можно писать. На все файлы, кроме директории с картинками нужны права только на чтение (550/440). Нужно для того, чтобы у взломщика не было права редактировать код проекта, либо код фреймворка.

При этом все равно можно залить посторонний код в директорию с картинками. Если у сайта единая точка входа (в большинстве случаев так и есть, исключение Битрикс, например), то нужно разрешить выполнять код только этого файла, а все остальные .php запретить. Например так:

# Редирект запросов на единую точку входа — /index.php
location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

# Перенаправлять /index.php в PHP-FPM
location /index.php {
    fastcgi_pass  unix:/something.sock;
    ...
}

# PHP-скрипты теперь не выпоняются, но скачиваются, т.е. будет видно код php-файлов. Блокируем, заодно блокируем файлы Git.
location ~ (\.php|\.git.*)$ {
    return 403;
}

Если так настроить, то залитый в картинки .php файл не выполнится — получим 403.