标签: hotlinking

如何防止文件直接访问URL?

我正在使用Apache,我的本地主机上有一个示例Web文件夹,例如:

      http://localhost/test/
Run Code Online (Sandbox Code Playgroud)

文件test夹中的文件:

     index.html  
     sample.jpg  
     .htaccess  
Run Code Online (Sandbox Code Playgroud)

样本来源index.html:

<html>
  <body>
    <img src="sample.jpg" />
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我运行网站时http://localhost/test/,它只会在页面上显示图像`sample.jpg'.


问题:

  • 我想阻止图像http://localhost/test/sample.jpg直接显示在网址栏中.

注: 我发现下面的工作方案上的每个浏览器进行测试时,除了火狐.

apache .htaccess mod-rewrite hotlinking

61
推荐指数
4
解决办法
14万
查看次数

PHP:如何阻止对文件的直接URL访问,但是仍然允许登录用户下载它?

我有一个网站,用户应该可以登录并听一首歌(一个自创的mp3).我想这样做,以便登录用户可以监听/下载/无论如何,该文件应驻留在服务器上(不存储在MySQL数据库中),但不能被具有该路径的非用户访问到URL.

例如:说我的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/和这个StackOverflow问题阻止通过http直接访问文件但允许php脚本访问但是既不回答我的所有问题也不符合我的标准.我错过了什么?

php .htaccess access-control hotlinking

37
推荐指数
2
解决办法
6万
查看次数

如何在不使用签名URL的情况下阻止Amazon S3上的热链接?

有没有什么方法可以防止在不使用签名URL的情况下在Amazon S3上进行热链接?

amazon-s3 hotlinking

21
推荐指数
2
解决办法
1万
查看次数

html &lt;img src=...&gt; 有效,但 JS 图像加载导致 CORS 错误

我想在 js+jquery 中创建图片编辑器。第一步,我要求用户提供图片网址。但是当我尝试在 JS 中加载图像数据(生成 base64 图像 uri)时遇到了问题。我在控制台中收到错误:… has beeb blocked by CORS policy: Access-Control-Allow-Origin …. 但我想知道为什么?如果在 html 文件中我创建例如(图像热链接):

<img  src="https://static.pexels.com/photos/87293/pexels-photo-87293.jpeg" />
Run Code Online (Sandbox Code Playgroud)

浏览器加载图像没有任何 CORS 问题!这是我的 JS 代码,对于相同的图像抛出 CORS 问题:

 function downloadFile(url) {
    console.log({url});    
    var img = new Image();
    img.onload = function() {
        console.log('ok'); 
        // never execute because cors error
        // … make base64 uri with image data needed for further processing
    };

    img.crossOrigin = "Anonymous";
    img.src = url;
}
Run Code Online (Sandbox Code Playgroud)

所以问题是 - 如何强制 JS 加载图像(作为 html-tag 加载它)并将其转换为 base64 url​​ …

html javascript hotlinking cors

21
推荐指数
1
解决办法
2万
查看次数

防止Amazon Cloudfront热链接

我使用Amazon Cloudfront托管我所有网站的图像和视频,以便更快地为我的用户提供服务,这些用户遍布全球.我还将非常积极的前向缓存应用于Cloudfront上托管的元素,设置Cache-Controlpublic, max-age=7776000.

我最近发现我的烦恼是第三方网站正在与我的Cloudfront服务器进行热链接,以便在未经授权的情况下在自己的页面上显示图像.

我已经配置.htaccess为阻止我自己的服务器上的热链接,但是没有找到在Cloudfront上执行此操作的方法,这似乎本身不支持该功能.而且,令人讨厌的是,亚马逊的Bucket Policies(可用于防止热链接)仅对S3产生影响,它们对CloudFront分发没有影响[ link ].如果您想利用这些政策,您必须直接从S3提供内容.

在我的服务器日志中搜索hotlinkers并手动更改文件名并不是一个真实的选择,尽管我一直在这样做以结束最明显的攻击.

欢迎大家提出意见.

amazon hotlinking amazon-cloudfront

20
推荐指数
5
解决办法
1万
查看次数

如何防止直接访问图像?

我想创建一个包含许多图像的网站.但我想防止直接访问图像,例如直接链接到图像而无需访问网站.

这样做的首选方法是什么?有利有弊的替代方案是什么?

我有一些想法(我不知道它们是否可行):

  • 文件权限
  • PHP会话
  • 临时文件名或URL
  • HTTP重定向?

也许这在许多网站上都没有实践过?例如,我试图访问Facebook上的私人照片,但没有登录,但我仍然可以访问照片.

该平台可能是一台带有NginX和PHP的Ubuntu机器.

security image hotlinking access-protection

17
推荐指数
3
解决办法
3万
查看次数

Google存储或Amazon S3或Google App Engine BlobStore

我打算使用Google App Engine构建一个网站.我的公共网站包含数千张图片.我想将这些图片存储在云端:Google Storage或Amazon S3或Google App Engine BlobStore.问题是图像链接.

  1. 至于谷歌存储,我用谷歌搜索,我无法找到一种方法来防止图像热链接.(虽然我非常喜欢它的命令行工具gsutil)

  2. Amazon S3具有"查询字符串身份验证",可生成过期的图像URL.但这对SEO来说非常糟糕,不是吗?不断更改网址会产生相当大的负面影响,因为需要一年多的时间才能将图片及其相关网址投放到Google图片中.我非常确定当GoogleBot来打招呼时,更改此网址会立即产生负面影响.(更新:通过引用来防止Amazon S3中图像热链接的更好方法是使用Bucket Policy.详情请访问:http://www.naveen.info/2011/03/25/amazon-s3-hotlink-prevention-with-bucket -policies /)

  3. Google App Engine BlobStore?我必须通过Web界面手动上传图像它也会产生不断变化的网址.(更新:由于我对Blobstore的无知,我犯了一个错误.通过使用Google App Engine BlobStore,您可以使用任何网址来提供您想要的图像.)

我需要的是简单的引荐来源保护:仅当引荐者是我的网站时才显示图像.

有没有更好的方法来防止图像热链接.由于云带宽成本极高,我不想申请破产.

更新:

仍然很难从三者中选择,每一个都有利有弊. BlobStore似乎是最终的选择.

google-app-engine amazon-s3 hotlinking cloud-hosting google-cloud-storage

17
推荐指数
1
解决办法
5483
查看次数

防止亚马逊S3文件的热链接?

我想允许任何人玩位于我S3的视频在我的网站作为src一个<video>标签,但不会让人们使用它作为一个src在他们的网站直接键入网址到浏览器栏播放视频.

希望别人这样做:

在此输入图像描述

我不希望以下HTML出现在http:// your -site.com上,但仅限于http:// my -site.com:

<html>
    <video src="https://s3.amazonaws.com/my-bucket/my-video.mp4"></video>
</html>
Run Code Online (Sandbox Code Playgroud)

我已经看到了一些SO链接,但我想用代码说话,因为我无法使这些解决方案适合我.

这是我目前无法正常工作的存储桶策略:

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "AllowPublicRead",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::my-bucket/*",
        "Condition": {
            "StringLike": {
                "aws:Referer": [
                    "https://my-site.com/*"
                ]
            }
        }
    }
  }
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. 为了测试我的存储桶策略,我将上面的HTML放在我的localhost上的测试文件中,并确定我可以通过键入来访问该视频http://localhost/test.html.为什么我的桶政策不能阻止这种情况?(我只想让它起作用http://my-site.com/test.html)
  2. 为了防止人们将s3 URL输入浏览器栏,我想我需要一个独立的存储桶策略解决方案,因为我不清楚AWS文档中如何防止通过浏览器直接访问.我想要散列网址让人难以猜测.也许有些方法可以使用AWS桶策略或其他解决方案?

为了更清楚,我的文件存储在s3上,但它们由亚马逊的CloudFront提供.所以我的CloudFront url src目前是media.my-site.com/my-video.mp4.CNAME是media.my-site.com.

php amazon-s3 referrer amazon-web-services hotlinking

13
推荐指数
1
解决办法
3775
查看次数

允许/拒绝使用.htaccess进行图像热链接

所以我在我的网站.htaccess文件中有这个,以防止来自所有其他域的图像,JS和CSS的热链接.

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain\.com [NC]
RewriteRule \.(gif|jpe?g|js|css)$ - [F,NC,L]
Run Code Online (Sandbox Code Playgroud)

问题:如何有选择地允许一个或两个域进行热链接?

.htaccess mod-rewrite hotlinking

12
推荐指数
1
解决办法
1万
查看次数

是否有某个版本的jQuery我可以在没有托管文件的情况下进行热链接?

只是想知道是否有一个网站,允许您热链接到最新版本的jquery.谷歌代码是否允许您,或jQuery.com本身?

想要的是一个恰好有jQuery我可以捏的网站.我想要一个网站,说你可以链接到他们的jQuery.

jquery google-code hotlinking

12
推荐指数
2
解决办法
2万
查看次数