javascript - Three.JS、Amazon S3、托管JS文件的访问控制源错误

标签 javascript amazon-s3 xss three.js

背景

我们使用 Javascript 库 Three.JS 来可视化存储在 Amazon S3 上的模型。

我的所有模型都使用 JSONLoader。其他格式缺乏我们团队需要的工具链支持,就包含的加载程序库而言,像 COLLADA 或 OBJ 这样的常见格式似乎是二等公民(例如,可以在“示例”下的源代码树中找到它们)。 . JSONLoader 位于核心加载程序文件夹中)。

我有大型模型文件,因此将它们及其相关 Assets 存储在带宽和空间相对便宜的 Amazon S3 存储上。目的是使用 Three.JS 的 Web 应用程序从我们在亚马逊上的存储中加载模型,一切正常。

问题

不幸的是,模型是 Javascript 文件(例如“modelBlah.js”),当它们被 JSONLoader 加载时,任何理智的浏览器都会立即提示我们违反了脚本的同源策略——例如,我们正在加载并尝试评估来自与调用脚本(这是应用程序的主要工具)不同域的脚本。

因此,看起来我们已经与多年的网络安全最佳实践背道而驰。

目前看过的解决方案

  • 自己托管模型?我们目前正在使用 Heroku,理想情况下我们希望使用专门标榜为“比特和带宽的大桶”的服务,而不是我们自己。

  • 使用 DNAME 记录欺骗资源的来源?不幸的是,这似乎不足以欺骗浏览器,因为用于媒体托管的子域仍然会激怒浏览器安全.

  • 使用 CORS,特别是 Access-Control-Allow-Origin header ? Amazon S3 的简要浏览似乎不允许这样做,但我希望是错误的。即便如此,这就足够了吗?


有什么想法吗?

最佳答案

您现在终于可以在 Amazon 上使用 CORS:http://docs.amazonwebservices.com/AmazonS3/latest/dev/cors.html

关于javascript - Three.JS、Amazon S3、托管JS文件的访问控制源错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11705833/

相关文章:

amazon-web-services - 使用 cloudformation 模板创建 s3 存储桶时出现 ValidationError

security - XSS攻击是否有可能获取HttpOnly cookie?

javascript - 将子作用域变量与父作用域变量同步

javascript - $window.addEventListener 未在 Angular 中触发

javascript - 从 js 控制 iframe 边距和源(iframe 中的 js)

javascript - 足以避免xss吗?

javascript - 如何避免 "Cross-Site Script Attacks"

javascript - 将字符串插入按钮 onclick location.href Javascript

ios - 如果在 <x> 秒内未调用给定函数,Swift 如何触发回调?

node.js - AWS NodeJS微服务: Iteratively invoke service when files in S3 bucket changed