gpt4 book ai didi

php - AWS S3 通过代理获取图像 - PHP

转载 作者:行者123 更新时间:2023-12-02 11:27:21 25 4
gpt4 key购买 nike

我在 S3 有一个存储桶,我已经上传了图片。
现在我正在使用 AWS - SDK 获取图像。现在我想通过代理绕过图像

$client = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'debug' => TRUE, // enable debug info
'stats' => TRUE, // enable stats
'@http' => [
'proxy' => 'http://192.168.16.1:10'
],
'credentials' => [
'key' => base64_decode(KEY),
'secret' => base64_decode(SECRET)
]
]);

这是我的存储桶设置,当我做 wireshark它仍然在请求中显示 AWS IP 地址。

谁能告诉我如何使用代理绕过 S3 图像。

最佳答案

如果我理解正确你想为你的图片设置一个保留代理例如你的系统下载发送到浏览器的图片以便它可以渲染它们,你不希望用户知道你的路径/你不希望公开对您的存储桶的读取访问权限。

如果是这种情况,您可以使用以下代码通过以下方式下载文件

$result = $client->getObject(array(
'Bucket' => $bucket,
'Key' => $keyname
));

header("Content-Type: {$result['ContentType']}");
echo $result['Body'];

然后可以使用 key 作为参数在特定 URL 上进行设置,或者如果您的存储桶得到正确保护,您可以通过 GET E.G URL image.php?key=some/key/on/aws.jpg 使用 key 名称并使用 $keyname = $_GET['key']在你的文件里面。

如果您使用 MySQL 表来使用查找,它将是 $id = $_GET['id'];并创建一个防止 SQL 注入(inject)的函数并返回 key然后将其用于您的 $keyname一个示例表是 $keyname并且可以通过映射数据库表 E.G 设置
CREATE TABLE `proxy_map`(
`id` INT(11) NOT NULL PRIMARY KEY,
`key` TEXT NOT NULL
)

如果您想限制它,以便只有这个特定站点可以使用它,您可以使用推荐人检查
$url = parse_url($_SERVER['HTTP_REFERER'] , PHP_URL_HOST);
if($url !== $_SERVER[HTTP_HOST]){ // assuming that the images are only loaded on the same site as this php script
http_response_code(404);
echo "<h1>File Not Found</h1><p>Sorry the file you were looking for could not be found</p>";
}

如果您希望允许来自一组站点的图像,例如,您可以使用一个子域设置。
$url = parse_url($_SERVER['HTTP_REFERER'] , PHP_URL_HOST);
$allowedDomains = array(
$_SERVER[HTTP_HOST],
"www.example.com"
);
if(!in_array($url, $allowdDomains))

关于php - AWS S3 通过代理获取图像 - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48070868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com