Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将临时AWS凭据输出到<;脚本>;来自PHP的标签?_Php_Amazon Web Services_Amazon S3_Aws Sdk Js_Aws Php Sdk - Fatal编程技术网

将临时AWS凭据输出到<;脚本>;来自PHP的标签?

将临时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

我开始开发另一个开发人员构建的应用程序,用于连接AWS JavaScript SDK的方法是将临时凭证输出到脚本标记中。在
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类型、病毒、速率限制等,然后发送到最终存储位置;这有一些模式。谢谢你提供的信息。在会期上注明。当你说“这有一些模式”时,你有一些例子吗?非常感谢!“难道有人不能访问该页面并打开页面源代码,利用临时信誉做一些恶意的事情,并上传一堆东西吗?”->是的!