将临时AWS凭据输出到<;脚本>;来自PHP的标签?
我开始开发另一个开发人员构建的应用程序,用于连接AWS JavaScript SDK的方法是将临时凭证输出到脚本标记中。在将临时AWS凭据输出到<;脚本>;来自PHP的标签?,php,amazon-web-services,amazon-s3,aws-sdk-js,aws-php-sdk,Php,Amazon Web Services,Amazon S3,Aws Sdk Js,Aws Php Sdk,我开始开发另一个开发人员构建的应用程序,用于连接AWS JavaScript SDK的方法是将临时凭证输出到脚本标记中。在index.php文件中,代码基本上与此类似: <?php $stsclient = StsClient::factory(array( 'credentials' => array( 'key' => 'thekey', 'secret' => 'thesecret' ) )); $sessi
index.php
文件中,代码基本上与此类似:
<?php
$stsclient = StsClient::factory(array(
'credentials' => array(
'key' => 'thekey',
'secret' => 'thesecret'
)
));
$session = $stsclient->getSessionToken([
'DurationSeconds' => 129600
]);
$temp_creds = $session->get('Credentials');
?>
<script type="text/javascript">
AWS.config.update({
accessKeyId : '<?php echo $temp_creds['AccessKeyId']; ?>',
secretAccessKey : '<?php echo $temp_creds['SecretAccessKey']; ?>',
sessionToken: '<?php echo $temp_creds['SessionToken']; ?>'
});
AWS.config.region = 'us-east-1';
</script>
AWS.config.update({
accessKeyId:“”,
secretAccessKey:“”,
sessionToken:'
});
AWS.config.region='us-east-1';
我知道这应该通过profile选项和~/.aws/credentials
文件来完成,因此它不会提交给公共回购,我最终会这样做
但是,将临时凭证输出到每页访问都会更改的页面上是否安全?STS只会生成一个临时令牌,以便凭证在特定时间后不再工作。但是,安全问题更多的是关于用户可以使用这些凭据做什么,您必须绝对确保用户只能使用这些凭据执行他应该执行的操作(即,通过以完全正确的方式配置IAM),访问密钥具有能够将文档上载到s3的适当范围权限。会话持续时间很长:129600秒。难道有人不能访问页面并打开页面源代码,用临时的creds做一些恶意的事情并上传一些东西吗?这看起来像是一个非常标准的实现。STS仅为已通过身份验证的用户(通过IAM或联合)提供临时的有限范围凭据。如果凭据的持续时间对于您的用例来说是一个问题,那么您总是可以缩短持续时间。是的,恶意用户可以从技术上打开页面,获取凭据,然后上传一堆东西。。。你应该单独解决这个问题。上传文件应隔离,检查MIME类型、病毒、速率限制等,然后发送到最终存储位置;这有一些模式。谢谢你提供的信息。在会期上注明。当你说“这有一些模式”时,你有一些例子吗?非常感谢!“难道有人不能访问该页面并打开页面源代码,利用临时信誉做一些恶意的事情,并上传一堆东西吗?”->是的!STS只生成一个临时令牌,以便凭据在特定时间后不再工作。但是,安全问题更多的是关于用户可以使用这些凭据做什么,您必须绝对确保用户只能使用这些凭据执行他应该执行的操作(即,通过以完全正确的方式配置IAM),访问密钥具有能够将文档上载到s3的适当范围权限。会话持续时间很长:129600秒。难道有人不能访问页面并打开页面源代码,用临时的creds做一些恶意的事情并上传一些东西吗?这看起来像是一个非常标准的实现。STS仅为已通过身份验证的用户(通过IAM或联合)提供临时的有限范围凭据。如果凭据的持续时间对于您的用例来说是一个问题,那么您总是可以缩短持续时间。是的,恶意用户可以从技术上打开页面,获取凭据,然后上传一堆东西。。。你应该单独解决这个问题。上传文件应隔离,检查MIME类型、病毒、速率限制等,然后发送到最终存储位置;这有一些模式。谢谢你提供的信息。在会期上注明。当你说“这有一些模式”时,你有一些例子吗?非常感谢!“难道有人不能访问该页面并打开页面源代码,利用临时信誉做一些恶意的事情,并上传一堆东西吗?”->是的!