我正在使用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
直接显示在网址栏中.注: 我发现下面的工作方案上的每个浏览器进行测试时,除了火狐.
我有一个网站,用户应该可以登录并听一首歌(一个自创的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脚本访问但是既不回答我的所有问题也不符合我的标准.我错过了什么?
有没有什么方法可以防止在不使用签名URL的情况下在Amazon S3上进行热链接?
我想在 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 …
我使用Amazon Cloudfront托管我所有网站的图像和视频,以便更快地为我的用户提供服务,这些用户遍布全球.我还将非常积极的前向缓存应用于Cloudfront上托管的元素,设置Cache-Control
为public, max-age=7776000
.
我最近发现我的烦恼是第三方网站正在与我的Cloudfront服务器进行热链接,以便在未经授权的情况下在自己的页面上显示图像.
我已经配置.htaccess
为阻止我自己的服务器上的热链接,但是没有找到在Cloudfront上执行此操作的方法,这似乎本身不支持该功能.而且,令人讨厌的是,亚马逊的Bucket Policies(可用于防止热链接)仅对S3产生影响,它们对CloudFront分发没有影响[ link ].如果您想利用这些政策,您必须直接从S3提供内容.
在我的服务器日志中搜索hotlinkers并手动更改文件名并不是一个真实的选择,尽管我一直在这样做以结束最明显的攻击.
欢迎大家提出意见.
我想创建一个包含许多图像的网站.但我想防止直接访问图像,例如直接链接到图像而无需访问网站.
这样做的首选方法是什么?有利有弊的替代方案是什么?
我有一些想法(我不知道它们是否可行):
也许这在许多网站上都没有实践过?例如,我试图访问Facebook上的私人照片,但没有登录,但我仍然可以访问照片.
该平台可能是一台带有NginX和PHP的Ubuntu机器.
我打算使用Google App Engine构建一个网站.我的公共网站包含数千张图片.我想将这些图片存储在云端:Google Storage或Amazon S3或Google App Engine BlobStore.问题是图像链接.
至于谷歌存储,我用谷歌搜索,我无法找到一种方法来防止图像热链接.(虽然我非常喜欢它的命令行工具gsutil)
Amazon S3具有"查询字符串身份验证",可生成过期的图像URL.但这对SEO来说非常糟糕,不是吗?不断更改网址会产生相当大的负面影响,因为需要一年多的时间才能将图片及其相关网址投放到Google图片中.我非常确定当GoogleBot来打招呼时,更改此网址会立即产生负面影响.(更新:通过引用来防止Amazon S3中图像热链接的更好方法是使用Bucket Policy.详情请访问:http://www.naveen.info/2011/03/25/amazon-s3-hotlink-prevention-with-bucket -policies /)
Google App Engine BlobStore?我必须通过Web界面手动上传图像它也会产生不断变化的网址.(更新:由于我对Blobstore的无知,我犯了一个错误.通过使用Google App Engine BlobStore,您可以使用任何网址来提供您想要的图像.)
我需要的是简单的引荐来源保护:仅当引荐者是我的网站时才显示图像.
有没有更好的方法来防止图像热链接.由于云带宽成本极高,我不想申请破产.
更新:
仍然很难从三者中选择,每一个都有利有弊. BlobStore似乎是最终的选择.
google-app-engine amazon-s3 hotlinking cloud-hosting google-cloud-storage
我想允许任何人玩位于我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)
两个问题:
http://localhost/test.html
.为什么我的桶政策不能阻止这种情况?(我只想让它起作用http://my-site.com/test.html
)为了更清楚,我的文件存储在s3上,但它们由亚马逊的CloudFront提供.所以我的CloudFront url src目前是media.my-site.com/my-video.mp4.CNAME是media.my-site.com.
所以我在我的网站.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)
问题:如何有选择地允许一个或两个域进行热链接?
只是想知道是否有一个网站,允许您热链接到最新版本的jquery.谷歌代码是否允许您,或jQuery.com本身?
我不想要的是一个恰好有jQuery我可以捏的网站.我想要一个网站,说你可以链接到他们的jQuery.
hotlinking ×10
.htaccess ×3
amazon-s3 ×3
mod-rewrite ×2
php ×2
amazon ×1
apache ×1
cors ×1
google-code ×1
html ×1
image ×1
javascript ×1
jquery ×1
referrer ×1
security ×1