首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP防止图像擦伤

问PHP防止图像擦伤
EN

Stack Overflow用户
提问于 2019-10-24 18:35:42
回答 1查看 167关注 0票数 2

我有一个为许多图像服务的项目。该项目还具有一个API,它不仅提供图像链接,而且还提供图像链接。

我希望有一种方法,成功地避免刮我的图像。我不介意用户可以单独下载每个图像,但不希望有人同时刮掉所有的图像,以避免高带宽的使用。

我认为使用htaccess拒绝直接访问图像文件夹。另外,考虑在PHP (在网站中)使用动态链接来显示图像(例如loadimage.php?id=XXXXX),这样我的用户就不知道完整的图像链接了。

我怎样才能在API (甚至在网站上)做到这一点,以防止刮擦?我想一些类似于令牌的东西,每个请求都会生成一个新的“图像id",但是或者我遗漏了一些东西,或者我想不出如何使它工作。

我知道这是不可能有一个100%有效的方法来做,但任何建议,如何困难,将不胜感激。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-24 18:56:29

你在找一个利率限制政策。它包括跟踪请求图像的次数(或交换的字节数),并在超过阈值时发出(通常是) 429 Too Many Requests响应。

Nginx有一些相当好的内置工具来限制利率。您提到了.htaccess,这意味着Apache,其中也有一个速率限制模块。

无论使用PHP还是不使用PHP,您都可以这样做。您可以识别希望限制费率的URL模式,并将速率限制策略应用于该URL模式(可以是PHP脚本,也可以是某个目录)。

对于Apache:

代码语言:javascript
复制
<Location ".../path/to/script.php">
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 400 
    SetEnv rate-initial-burst 512
</Location>

或者,您可以在PHP中编写将访问写入数据库的代码,并根据给定窗口期间的访问次数强制限制。

当web服务器本身支持这样好的工具时,我通常不会建议编写自己的工具。一个例外情况是,如果在一个集群中使用多个web服务器,则无法轻松同步整个服务器的限速阈值和计数。

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

https://stackoverflow.com/questions/58547353

复制
相关文章

相似问题

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