我想对特定文件夹使用StringLike aws:Referer
的条件,并将该文件夹的其余部分公开访问。
这是我的存储桶政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": [
"arn:aws:s3:::bucketName/folderName/*"
]
},
{
"Sid": "",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketName/folderName/users/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"https://example.com/*"
]
}
}
}
]
}
当我使用上述政策时,它不适用于第一个。
答案 0 :(得分:1)
尝试以下政策:
{
"Sid": "",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketName/folderName/users/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"https://example.com/*"
]
}
}
}
答案 1 :(得分:1)
您的政策的第一部分是授予GetObject
访问您广告资源的folderName
路径中的任何内容。此包含 folderName/users/*
。
因此,您的策略的第二部分未被使用(因为第一个策略已授予对folderName/users/*
路径的访问权限。
您可以使用不同的存储分区来解决它,或者您可以将第二个策略转换为Deny
StringNotLike
(如果引用者不是folderName/users/*
,则有效地说example.com
拒绝访问users
。
坦率地说,您的策略看起来很奇怪,因为它授予对整个referer
路径层次结构的访问权限,这可能不是您希望它执行的操作。 (我假设您只想根据访问您的应用程序的人员授予对特定用户数据的访问权限。)
请注意jQuery(document).ready(function($) {
var offsetHeight = $(test).height(); //Successfully Got height
var txt = "Height with padding and border: " + offsetHeight + "px";
document.getElementsByClassName("logo_helper").style.top = txt;
});
不安全 - 很容易在浏览器和网络抓取软件中伪造此值。