【问题标题】:Can an exterior javascript make ajax calls to fetch session data?外部 javascript 可以进行 ajax 调用来获取会话数据吗?
【发布时间】:2016-08-31 18:31:16
【问题描述】:

想象一个场景,您拥有 mysite.com,它从外部域(例如 adsprovider.com/ads.js)加载 javascript。

adsprovider.com 的 javascript 然后可以对 mysite.com 执行 ajax 调用并尝试检索用户的会话数据吗?如果是这样,您如何保护您的用户免受它的侵害?

【问题讨论】:

    标签: php ajax cross-domain session-cookies


    【解决方案1】:

    adsprovider.com 的 javascript 然后可以对 mysite.com 执行 ajax 调用

    是的。来源是由加载脚本的 HTML 文档的 URL 定义的,而不是由加载脚本本身的 URL。

    检索用户的会话数据

    仅当会话数据通过 HTTP 公开时。你从不提供给客户端的东西是安全的(但可能会有相当多的会话数据应该在你的服务器和用户之间保密)。

    请注意,该脚本也可以读取document.cookies 并窃取会话令牌(除非发送会话令牌时带有 httponly 标志)。

    如果是这样,您如何保护您的用户免受它的侵害?

    沙盒广告在不同来源托管的 iframe 中。

    【讨论】:

      【解决方案2】:

      幸运的是,您的会话数据的 Ajax 调用不能直接从外部服务器请求。

      您当然可以从 CDN 外部源加载 javascript,但脚本从您自己的域运行,并且无法从外部访问您的服务器。
      否则会有很多安全问题。

      还要记住,javascript 是客户端。

      您可以查看同源政策CORS以获取有关此主题的更多信息。

      【讨论】:

      • “脚本从您自己的域运行,并且无法从外部访问您的服务器” - 关键是由于脚本从您自己的域运行,它不是 “从外面”
      • 不。 Javascript 无法从外部使用 ajax 访问您的服务器,但谢谢...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 2022-07-12
      • 2011-02-26
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多