【问题标题】:Client side API security客户端 API 安全性
【发布时间】:2019-05-05 21:54:33
【问题描述】:

我正在我的网站上实现Olark 实时聊天,我所要做的就是实现以下 js 代码。

  <script type="text/javascript" async>
      ;(function(o,l,a,r,k,y){if(o.olark)return;
      r="script";y=l.createElement(r);r=l.getElementsByTagName(r)[0];
      y.async=1;y.src="//"+a;r.parentNode.insertBefore(y,r);
      y=o.olark=function(){k.s.push(arguments);k.t.push(+new Date)};
      y.extend=function(i,j){y("extend",i,j)};
      y.identify=function(i){y("identify",k.i=i)};
      y.configure=function(i,j){y("configure",i,j);k.c[i]=j};
      k=y._={s:[],t:[+new Date],c:{},l:a};
      })(window,document,"static.olark.com/jsclient/loader.js");

      /* Add configuration calls below this comment */
      olark.identify('XXXX-XXX-XX-XXXX');
  </script>

我想知道像OlarkDisqus 和类似公司这样的第三方JavaScript 插件 是什么技术?

如您所见,olark.identify() 在我的网页上是公开的,您可以通过“检查元素”找到它。那么他们如何处理安全性并退回不需要的请求?

  olark.identify('XXXX-XXX-XX-XXXX');

【问题讨论】:

  • 不,我只是将以下代码复制到我的网站。

标签: javascript rest api security rest-security


【解决方案1】:

这是一个相当广泛的问题,但我会尝试回答:

很多这些工具并不能真正阻止不需要的请求。例如,可以在完全不相关的网站上嵌入 disqus 评论块。

我认为这不是最糟糕的事情,因为:cmets 出现在其他地方有什么问题?一开始就已经是公开信息了。

需要准确阻止它们嵌入哪个域的脚本倾向于使用 CORS 和 Origin 标头来确保这一点。或者,他们可以使用来自document.location 的信息。

从某种意义上说,这不是“硬”安全性,它完全禁止滥用,但它使用浏览器沙箱使其更难被滥用。

【讨论】:

  • 感谢您的回答埃弗特!你能给我推荐一些阅读内容吗?我还是不明白 Olark 怎么能只使用 JS 客户端?那安全吗?你能以正确的方式指出我吗?谢谢
  • 我认为这很难回答,因为这取决于您对安全的定义。每个人都可以看到您的“代码”,但您认为他们会造成什么危害?
  • 假设我正在制作与我的 API 通信的 JS 小部件,并计算该小部件发出的每个请求。如果有人从小部件网站窃取了该代码并将其实施到他们的网站并开始发出相同的请求,那么我的计数将是错误的并且不安全。这种东西的最佳做法是什么? @Evert
  • 如果 JS 小部件使用 CORS,它将始终包含一个 Origin 标头,其中包含嵌入它的域名,但人们仍然可以代理您的 API 并绕过它。没有完美的方法可以防止这种情况发生,最好不要试图阻止它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
相关资源
最近更新 更多