【问题标题】:File permissions on a web server?Web 服务器上的文件权限?
【发布时间】:2012-03-04 02:28:13
【问题描述】:
我是为网站编写代码的新手。该网站允许用户上传文件,例如个人资料图片或其他图片。这些文件保存在 unix 文件系统中,查找这些图像的 URL 存储在 MySQL 数据库中。
似乎我可以让用户上传文件的唯一方法是向使用 chmod 的任何人授予写入权限。否则它会抱怨它没有写权限。但是他们不应该写任何他们想要的东西或覆盖其他用户的东西。同样,为了允许用户查看他们有权访问的图像,他们需要文件系统的读取权限。但是现在这意味着任何拥有该图片网址的人也可以看到该图片,对吗?这不是我想要的。
有解决这个矛盾的办法吗?还是我错误地考虑了这个问题?感谢您的帮助。
【问题讨论】:
标签:
permissions
upload
web
chmod
【解决方案1】:
您需要管理应用程序中的权限,并且不要将本地文件系统的任意部分直接暴露给客户端。您的应用程序应该决定某人可以看到哪些文件或将数据写入何处。您不应信任来自客户端的数据(文件名等)...理想情况下,使用系统生成的名称将文件存储在磁盘上,并将人类可读的名称存储在数据库中。
【解决方案2】:
太阳之星9,
既然您已经使用 MySQL 数据库将图像的 URL 存储在文件系统上,为什么不将图像本身存储为 BLOB(二进制大对象)?
这通常是一种广为接受的设计实践,允许用户将二进制数据上传到网站。
您是否使用 PHP、Java、Ruby/Rails 或其他工具来开发您的网站?根据您使用的内容,如果您确定要使用文件系统来存储图像数据,可能会有文件上传/管理插件或模块来帮助您开发您正在尝试做的事情。