当前位置:  开发笔记 > 编程语言 > 正文

如何为用户提供一个javascript小部件,以便从我的网站安全地提取内容

如何解决《如何为用户提供一个javascript小部件,以便从我的网站安全地提取内容》经验,为你挑选了1个好方法。

我需要允许来自我们网站的内容嵌入其他用户网站.该conent将是收费的所以我需要保持安全,但其中一个要求是订阅网站只需要将一些javascript放入他们的页面.

看起来保护我们内容的唯一方法是检查托管我们的javascript的页面的URL与订阅站点匹配.有没有其他方法可以做到这一点,因为我们不知道将访问订阅网站的客户端浏览器?

最好的方法是在页面加载时提供填充已知页面元素的javascript包含文件吗?我正在考虑使用jquery,因此include文件将首先在jquery中调用(检查它是否已经加载并使用某种命名空间保护),然后在页面加载时填充给定的元素.

我想尽可能包含一个样式表来设置元素的样式,但我不确定我是否可以将其与javascript一起加载.

这听起来像是一种合理的方法吗?还有什么我应该考虑的吗?

提前致谢,

麦克风



1> bobince..:

看起来保护我们内容的唯一方法是检查托管我们的javascript的页面的URL与订阅站点匹配.

啊,但在客户端或服务器端代码?

他们都有自己的缺点.使用服务器端代码是不可靠的,因为有些浏览器根本不会传递Referer标题,如果你想阻止缓存保留脚本副本,阻止Referer-check发生,你必须服务于nocache或Vary: Referer标头,会损害性能.

另一方面,通过返回的脚本中的客户端检查,您无法确定您正在运行的环境是否已被破坏.例如,如果您的包含脚本标记如下:


并且您的服务器端脚本被查找123为使用域的客户的ID customersite.foo,它可能会响应脚本:

if (location.host.slice(-16)==='customersite.foo') {
    // main body of script
} else {
    alert('Sorry, this site is not licensed to include content from example.com');
}

这似乎很简单,除了包含站点可能已经替换String.prototype.slice为始终返回的函数customersite.foo.或者脚本体中使用的各种其他函数可能是可疑的.

包含

mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有