首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免图片预览流量的滥用?

如何避免图片预览流量的滥用?
EN

Stack Overflow用户
提问于 2011-08-16 00:59:15
回答 3查看 141关注 0票数 2

Facebook和Google+都有一个很棒的功能:图像预览。当你在网页的URL中输入图片时,你可以在它们之间进行选择--这是通过代理脚本完成的。

我的问题是--有没有一种方法可以重现同样的行为,同时防止用户插入指向大文件的链接,而这些大文件应该是HTML文件?代理脚本可能如下所示

代码语言:javascript
复制
<?php
$contents = file_get_contents($_GET['url']); //problem is on this line - When $_GET['url'] is url to 5GB file, it will try to download it - How could I prevent it?
$images = preg_match_all('~img src="(.*?)"~', $contents, $images);
if ($images){
    echo json_encode($images[1]);
else 
    die('[]');
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-16 01:02:12

发出HEAD请求,这基本上是一个GET,但不传输文件的任何内容。然后,您可以提取Content-length标头,并查看如果它是GET,您将获取多少数据。

然而,请注意,没有什么可以阻止恶意用户提供两组不同的数据-通过“head”提供"this image is 10k“,然后通过”get“提供1TB的数据。这会浪费他们的带宽,也会浪费你的带宽,但这是可能的。

票数 2
EN

Stack Overflow用户

发布于 2011-08-16 01:01:11

使用cURL (或一些传真),并首先获取一个HEAD请求。这将提供URL头,它将在尝试检索整个内容之前告诉您Content-Length的最终结果(以字节为单位)。

票数 3
EN

Stack Overflow用户

发布于 2011-08-16 01:04:13

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

实际上,在file_get_contents中有一个可选的参数来指定要读取的最大长度。

maxlen最大读取数据长度。默认设置是读取,直到到达文件末尾。请注意,此参数应用于筛选器处理的流。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7068026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档