搜索

首页  >  问答  >  正文

php - 如何防止网站图片被浏览

做一个网站,上传图片到服务器某个位置,然后通过链接可以直接访问这个图片,就是说别人拿到这个链接就可以直接在浏览器输入绝对路径看到。怎么样可以防止呢?

黄舟黄舟2834 天前1345

全部回复(11)我来回复

  • 伊谢尔伦

    伊谢尔伦2017-05-16 13:10:02

    楼主可以试用下又拍云的云存储,有Token防盗链解决你说的问题。提供篇文章方便你了解Token防盗链。

    文章推荐:Token 防盗链详解

    回复
    0
  • 某草草

    某草草2017-05-16 13:10:02

    改造图片服务器,图片文件夹不直接对外暴露。 在图片服务器上架设一个Http代理服务,访问图片的url中必须有一个合法的token参数才允许访问,例如 http://www.imgserver.com/test.jpg?t=xT5112XabseFg0,

    • 其中t参数时你自己设定的加密算法生成的,里面含有这个参数的创建时间。

    • 服务器接收到这个请求后,解密token,拿到里面的时间戳,如果是10秒之内创建的(你可以设置你自己希望的有效期),就返回图片信息,否则拒绝访问。

    这样一个图片链接就有了有效期概念,自己使用时加载带有合法t参数的图片就能正常展示给用户。用户此时自己拷贝这个图片地址在浏览器直接访问,很可能已经过了有效期,自然打不开了。

    此外,还有个更简单的方法防盗链:(当然也可以和上面的方法结合用)

    判断http请求发过来的referer信息,如果不等于你自己的网站域名或者为空(即,该图片请求不是在你的网站发起的),那么不允许访问。

    回复
    0
  • 習慣沉默

    習慣沉默2017-05-16 13:10:02

    1.最蠢的方法就是对图片文件名进行加密,当系也防止不了link被盗用
    2.使用base64方式加载图片
    3.在中间器设置方式服务器以外访问

    回复
    0
  • 阿神

    阿神2017-05-16 13:10:02

    搜一下图片防盗链吧,这方面要说的太多了。

    回复
    0
  • 黄舟

    黄舟2017-05-16 13:10:02

    这种需求还是用图片防盗链技术解决比较好。

    回复
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:10:02

    可以试试云平台的对象存储功能,阿里云和七牛都有,上传和下载的权限是分开的,或者也有相对传统的防盗链这样的功能可以用。

    回复
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:10:02

    了解thinkphp5吧,他为什么要把入口文件放到public目录下呢?

    因为这样可以保证你项目中的资源,比如图片,不能直接被浏览器访问到,只能通过单一的入口文件 index.php 访问,这样你的图片或者某些代码文件就不能被直接访问到了!

    你可以参照这个思路,设置访问权限,只能通过入口文件访问到图片资源

    回复
    0
  • 为情所困

    为情所困2017-05-16 13:10:02

    图片上传就是给人看的。估计你是想防盗连吧。开启防盗连,通常判断referer就能实一, 并选择禁止空的referer就可以了。当然,要完全防人家盗。可以用不公开真实地址,或者加上token等办法。

    回复
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:10:02

    如果你用的http服务器是apache,那么在图片目录下新建 .htaccess 写入以下代码:

    <ifmodule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$ [NC]
    RewriteCond %{HTTP_REFERER} !abc.com [NC]
    RewriteRule .*\.(jpg|png)$ http://localhost/ [R,NC,L]
    </ifmodule>

    原理是利用 apache 的 rewrite 功能,判断 referer 是否是来自 abc.com,如果不是则跳转到 localhost。
    如果图片是直接访问是没有 referer 的,如果是从其他网站引用则 referer 是其他网站的域名,都不允许访问,可以达到保护图片和节省流量的效果。

    回复
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:10:02

    我只想说,要不放到服务器去!只要放上去,就能看!什么鬼防盗链,防菜鸟还行!

    回复
    0
  • 取消回复