У меня есть сайт, который обслуживает наш контент от Amazon S3. В настоящее время я могу читать и записывать данные на S3 просто отлично с моего веб-сервера/веб-сайта. Разрешение ACL в порядке - у меня есть полные разрешения для веб-сайта, и вы просто читаете разрешения для общественности.S3 Bucket Policy for hotlinking предотвращает запись
Затем я добавил политику ведомости S3 для предотвращения хотлинкинга. Ниже вы можете ознакомиться с политикой S3.
Эта политика хорошо работает - за исключением одной проблемы - теперь она предотвращает запросы на запись файла с моего веб-сервера. Таким образом, хотя мой общедоступный веб-сайт прекрасно обслуживает контент, когда я пытаюсь выполнять операции с файлами или каталогами, например, загружать изображения или перемещать изображения (или каталоги), теперь я получаю сообщение об ошибке «Доступ запрещен». (моим сервером веб-приложений, который является Railo/Coldfusion)
Я не уверен, почему это происходит? Первоначально я думал, что это может быть связано с тем, что запросы на чтение/запись файлов между моим веб-сервером и S3 поступали через мой IP-адрес, а не в мое доменное имя. Но даже после добавления моего IP-кода ошибки сохраняются.
Если я удалю политику, все будет хорошо работать.
Кто-нибудь знает, что вызывает это или что мне здесь не хватает? Спасибо
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "Allowinmydomains",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::cdn.babeswithbraces.com/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://www.babeswithbraces.com/*",
"http://babeswithbraces.com/*",
"http://64.244.61.40/*"
]
}
}
},
{
"Sid": "Givenotaccessifrefererisnomysites",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::cdn.babeswithbraces.com/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://www.babeswithbraces.com/*",
"http://babeswithbraces.com/*",
"http://64.244.61.40/*"
]
}
}
}
]
}
Что делать, если вы положили запрет до разрешения или полностью удалили блок «StringNotLike»/second policy? Первое условие «StringLike» должно работать, чтобы заблокировать любой запрос, не входящий в ваш домен, сам по себе. – Brian
@Brian: Перемещение их вокруг ничего не делает. Удаление блока StringNotLike позволяет выполнять все запросы, делая таким образом предотвращение хотлинкинга недействительным. Я также где-то читал, что у вас должны быть блокировки «Разрешить» и «Запретить», чтобы сделать это эффективным, как это происходит, когда они находятся. – Cheeky