IP-Guard如何实现允许访问指定网站,但不能往该网站上传文件?
Posted Chenchen_new
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IP-Guard如何实现允许访问指定网站,但不能往该网站上传文件?相关的知识,希望对你有一定的参考价值。
如何实现允许访问指定网站,但不能往该网站上传文件?
14
可以通过上传控制策略实现,在控制台-【高级】-【上传控制】,设置以下策略:
策略名称:按需填写
动作:禁止
Http(s)/Ftp/Tcp协议:根据实际情况勾选,如:勾选Http(s)协议
限制大小:根据需要限制上传的文件的大小填写
网站或网络地址:根据实际要禁止上传的网站填写,支持通配符
注:如果限制大小太小可能会导致网页无法访问,Http网站建议数值是4kb,Https网站建议数值是10kb
能否支持统计客户端特定时间段内的网页浏览时长?
支持,在控制台-【统计】-【上网浏览】界面可以按时间段设置查询条件进行统计。如下图:
能否限制客户端从外网下载文件?
支持,需要视具体场景使用不同的方案:
1、如果是通过网页下载文件,可以通过网页浏览控制策略直接禁止访问该网站,
策略名称:按需填写
动作:禁
PHP:如何阻止对文件的直接 URL 访问,但仍允许登录用户下载它?
【中文标题】PHP:如何阻止对文件的直接 URL 访问,但仍允许登录用户下载它?【英文标题】:PHP: How can I block direct URL access to a file, but still allow it to be downloaded by logged in users? 【发布时间】:2011-10-30 22:14:48 【问题描述】:我有一个网站,用户应该可以在该网站上登录并听一首歌曲(自创 mp3)。我想让它登录的用户可以监听/下载/任何东西,并且文件应该驻留在服务器上(不存储在 MySQL 数据库中),但不能被具有路径的非用户访问到网址。
例如:假设我的 mp3 位于 mysite.com/members/song.mp3 如果您已登录,您应该可以看到 mysite.com/members/index.php 页面,这将允许访问歌曲.mp3 文件。如果您没有登录,mysite.com/members/index.php 页面将不会向您显示 song.mp3 文件,并且直接链接到它不应授予访问权限。
我很确定这是通过 htaccess 完成的,我已经做了很多谷歌搜索,并在此处搜索。我找到的两个最接近的答案是这个 htaccess 指南 http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/ 和这个 *** 问题 Block direct access to a file over http but allow php script access 但都没有回答我所有的问题以满足我的标准。我错过了什么?
【问题讨论】:
【参考方案1】:进入文件夹 members 创建新文件夹 files,将所有歌曲移到此处,创建新 .htaccess 文件并添加以下行:
Order Deny,Allow
Deny from all
进入文件夹 members 创建文件 get_song.php 并添加以下代码:
if( !empty( $_GET['name'] ) )
// check if user is logged
if( is_logged() )
$song_name = preg_replace( '#[^-\w]#', '', $_GET['name'] );
$song_file = "$_SERVER['DOCUMENT_ROOT']/members/files/$song_name.mp3";
if( file_exists( $song_file ) )
header( 'Cache-Control: public' );
header( 'Content-Description: File Transfer' );
header( "Content-Disposition: attachment; filename=$song_file" );
header( 'Content-Type: application/mp3' );
header( 'Content-Transfer-Encoding: binary' );
readfile( $song_file );
exit;
die( "ERROR: invalid song or you don't have permissions to download it." );
现在,您可以使用此 URL 获取歌曲文件:http://mysite.com/members/get_song.php?name=my-song-name
【讨论】:
您可以将文件存储在 wwwroot 之外,而不是拒绝直接访问。 我试过这个从文件夹中读取一个文本文件,它工作但我无法显示调用 php.ini 的 jpeg 图像。我将内容类型设置为图像/JPEG。如果有人用图片试过这个,你能帮帮我吗。 我试过了,但下载后我无法打开文件:无法打开流:HTTP 请求失败! HTTP/1.1 403 禁止【参考方案2】:您可以通过 .htaccess 做的唯一事情是需要来自您的站点的引荐来源网址,这并不安全。伪造推荐人并非易事,任何人都可以吸干您的网站。
唯一您只能让登录用户下载该文件的方法是将文件放置在您的 webroot 之外并使用 PHP 脚本进行访问。简而言之:
if (is_logged_in())
readfile($name_of_file);
else
die("Access denied");
【讨论】:
不会说它是“唯一的东西”【参考方案3】:您是否使用诸如 PHP 之类的脚本语言来处理您的网站?如果是这样,那么最好的方法是创建一个脚本来处理内容的“交付”。将内容保存在受保护的目录中,即在您的 http 或 www 文件夹上方。然后当用户登录时,指向您的内容的链接将如下所示:
http://yoursite.com/listen.php?song_id=xxx
脚本会通过 id 定位到需要的歌曲,然后将数据呈现给用户
【讨论】:
以上是关于IP-Guard如何实现允许访问指定网站,但不能往该网站上传文件?的主要内容,如果未能解决你的问题,请参考以下文章