Права доступа к файлам на веб-сервере? - PullRequest
0 голосов
/ 04 марта 2012

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

Похоже, что единственный способ, которым я могу позволить пользователям загружать файлы, - дать кому-либо доступ на запись с помощью chmod. В противном случае он жалуется, что не имеет разрешения на запись. Но они не должны быть в состоянии написать что-то, что они хотят или переписать материал других пользователей. Аналогично, чтобы пользователи могли видеть изображения, к которым у них есть законный доступ, им нужны разрешения на чтение в файловой системе. Но теперь это означает, что любой, у кого есть URL к этой картинке, тоже может видеть изображение, верно? Это не то, что я хочу.

Есть ли решение этого противоречия? Или я неправильно думаю о проблеме? Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 04 марта 2012

SunStar9,

Поскольку вы уже используете базу данных MySQL для хранения URL-адреса изображения в файловой системе, почему бы просто не сохранить само изображение как BLOB (большой двоичный объект)?

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

Используете ли вы PHP, Java, Ruby / Rails или что-то другое для разработки своего сайта?В зависимости от того, что вы используете, могут существовать плагины или модули загрузки / управления файлами, которые помогут вам разработать то, что вы пытаетесь сделать, если вы уверены, что хотите использовать файлы ystem для хранения данных изображения.

0 голосов
/ 04 марта 2012

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

...