Php 如何保护公共图像上载文件夹不受操纵/直接访问

Php 如何保护公共图像上载文件夹不受操纵/直接访问,php,apache,.htaccess,file-upload,Php,Apache,.htaccess,File Upload,我已经找到了这个问题的几个答案,但每个案例都与我的不同。在我花几个小时实施我认为有效的方案之前,我想听听一两个意见。谁知道呢,也许有一个更简单的解决方案也会让其他人受益 我正在创建一个提供照片修改服务的网站。我的每个客户都将使用我在Github上找到的jQuery/PHP上传脚本(script-props BlueImp!)的修改版本上传他们的照片。上传完每个图像后,图像文件名旁边会显示图像的缩略图 上载页面根据图像的顺序创建一个文件夹,以及一个存储图像的缩略图子文件夹。例如,对于订单#1234

我已经找到了这个问题的几个答案,但每个案例都与我的不同。在我花几个小时实施我认为有效的方案之前,我想听听一两个意见。谁知道呢,也许有一个更简单的解决方案也会让其他人受益

我正在创建一个提供照片修改服务的网站。我的每个客户都将使用我在Github上找到的jQuery/PHP上传脚本(script-props BlueImp!)的修改版本上传他们的照片。上传完每个图像后,图像文件名旁边会显示图像的缩略图

上载页面根据图像的顺序创建一个文件夹,以及一个存储图像的缩略图子文件夹。例如,对于订单#12345:

/双向上传/12345

  • 在每个目录上写一个空白的
    index.html
    ,这将禁止访问文件
  • 在.htaccess中写入以下内容(如果不存在,则创建此文件)

    或者,如果您希望局域网外无任何条目

    # no nasty crackers in here!
    order deny,allow
    deny from all
    allow from 192.168.0.0/24
    # this would do the same thing..
    #allow from 192.168.0.0 to 192.168.0.24
    

  • 双向

  • 在每个目录上写一个空白的
    index.html
    ,这将禁止访问文件
  • 在.htaccess中写入以下内容(如果不存在,则创建此文件)

    或者,如果您希望局域网外无任何条目

    # no nasty crackers in here!
    order deny,allow
    deny from all
    allow from 192.168.0.0/24
    # this would do the same thing..
    #allow from 192.168.0.0 to 192.168.0.24
    


  • 您想向每位车主客户展示拇指,而不是向其他客户展示拇指吗? 知道订单号(是Sequenziel)你可以很容易地尝试一些链接和查看一些照片

    我建议对上传文件夹使用.htaccess密码,并为您必须归属于订单号的每个拇指生成哈希数

    第二种解决方案:密码为.htaccess,在生成订单确认页面时不保存拇指,即可访问上载文件夹并生成拇指。(如你所说,他只需看一次)


    玩得开心

    您想向每位所有者客户展示拇指,而不是向其他客户展示拇指吗? 知道订单号(是Sequenziel)你可以很容易地尝试一些链接和查看一些照片

    我建议对上传文件夹使用.htaccess密码,并为您必须归属于订单号的每个拇指生成哈希数

    第二种解决方案:密码为.htaccess,在生成订单确认页面时不保存拇指,即可访问上载文件夹并生成拇指。(如你所说,他只需看一次)


    玩得开心

    你应该做的两件事是:

    禁用目录索引


    始终保持文件名的随机性。使用数据库映射它们。i、 e file1.jpg->file\u af32424ff。您还可以将缩略图文件信息存储在同一个表中。

    您应该做的两件事是:

    禁用目录索引


    始终保持文件名的随机性。使用数据库映射它们。i、 e file1.jpg->file\u af32424ff。您也可以将缩略图文件信息存储在同一个表中。

    太好了,我不知道以前为什么没有想到要这样做。不使用Order作为文件夹名,我只使用文件夹名sha1(SALT.$OrderNumber)如何?如果没有人知道文件夹名称(除了上传文件的人),我就没有什么好担心的了。。。是吗?你可以这样做,但是如果有人发现你使用的盐,他们可以访问你的所有文件,而不仅仅是一个文件,就像在这种情况下,它是从数据库映射的随机名称一样。很好,我不知道为什么我以前没有想过这样做。不使用Order作为文件夹名,我只使用文件夹名sha1(SALT.$OrderNumber)如何?如果没有人知道文件夹名称(除了上传文件的人),我就没有什么好担心的了。。。是吗?你可以这样做,但如果有人发现你使用的盐,他们可以访问你的所有文件,而不仅仅是一个单独的文件,因为它是从数据库映射的随机名称。谢谢你的快速回复Nicolas!我真的很感激!不幸的是,如果他们不能一次性完成上传,他们可能不得不重新登录才能完成上传。如果他们必须重新登录,他们将需要查看以前上传的图像的缩略图。不过,我非常喜欢对文件夹名称进行哈希处理的想法。我在上面提到过,与其用Order作为文件夹名,不如用sha1(SALT.$OrderNumber)作为文件夹名?如果有恶意的人猜不出文件夹的名字,我应该很好,对吗?再次感谢!!你必须散列的拇指文件名…安静更容易!但你必须将其插入数据库,以便在订单号和拇指名称之间建立关系。谢谢你的快速回复Nicolas!我真的很感激!不幸的是,如果他们不能一次性完成上传,他们可能不得不重新登录才能完成上传。如果他们必须重新登录,他们将需要查看以前上传的图像的缩略图。不过,我非常喜欢对文件夹名称进行哈希处理的想法。我在上面提到过,与其用Order作为文件夹名,不如用sha1(SALT.$OrderNumber)作为文件夹名?如果有恶意的人猜不出文件夹的名字,我应该很好,对吗?再次感谢!!你必须散列的拇指文件名…安静更容易!但你必须将其插入数据库,以便在订单号和拇指名称之间建立关系。谢谢,伙计,这太棒了!你知道如何在网上转换吗?谢谢,这太棒了!你知道如何在web.config上转换它吗