2012-03-04 4 views
0

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

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

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

ответ

0

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

0

SunStar9,

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

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

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

Смежные вопросы