如果我只使用脚本标签 hack 并严格使用 JSON 进行通信怎么办?那安全吗?如果不是,为什么不呢?
假设您有两台服务器 - frontend.com 和 backend.com。frontend.com 包含这样的<script>
标签 - <script src="http://backend.com/code.js"></script>
。
当浏览器评估时code.js
被认为是的一部分frontend.com
而不是backend.com
. 因此,如果 code.js 包含与 backend.com 通信的 XHR 代码,它将失败。
使用 HTTPS 会更安全吗?示例场景将不胜感激。
如果您只是将您的转换<script src="https://backend.com/code.js>
为 https,那将不安全。如果您页面的其余部分是 http,那么攻击者可以轻松地在页面中间进行人为操作并将该 https 更改为 http - 或者更糟糕的是,包含他自己的 javascript 文件。
如果您将整个页面及其所有组件转换为 https,它会更安全。但是,如果您足够偏执地做到这一点,那么您也应该偏执地不要依赖外部服务器来获取数据。如果攻击者破坏了 backend.com,他实际上已经在 frontend.com、frontend2.com 和您的所有网站上获得了足够的影响力。
简而言之,https 是有帮助的,但如果您的后端服务器遭到入侵,它对您毫无帮助。
那么,我有哪些选择?
- 在每个客户端应用程序上添加代理服务器。您不需要编写任何代码,您的网络服务器可以自动为您完成。如果您使用的是 Apache,请查找 mod_rewrite
- 如果您的用户使用最新的浏览器,您可以考虑使用Cross Origin Resource Sharing。
- 正如 The Rook 指出的,您也可以使用 Flash + Crossdomain。或者,您可以使用 Silverlight 及其相当于 Crossdomain。这两种技术都允许您与 javascript 进行通信——因此您只需要编写一个实用函数,然后普通的 js 代码就可以工作。我相信 YUI 已经为此提供了一个闪存包装器 - 检查YUI3 IO
你有什么建议吗?
我的建议是创建一个代理服务器,并在整个网站中使用 https。