如何保护 javascript 代码免于在其他域上运行(被盗)?需要更多想法
重复
首先,这可能看起来像 如何防止你的JavaScript代码被窃取、复制和查看?
等等,但事实并非如此。
我寻找可以做到的想法,窃取 JS 可能非常困难
我的一些例子:
- 当然混淆代码
- 使用
document.location
检查是否有一些 域中的字母等于脚本所在位置的字母 通常可以 - 在函数调用中使用此位置的一部分,例如 eval('first_part_of_function_name'+part_from_location+'third_pard(parameters)');
- 将应用程序中的一些重要的常量需求存储在页面设计中的某些元素中,并从 JS 中获取它,例如
$('#header div.onright a rel')
- 通过 AJAX 获取脚本的某些部分
eval()
它 - 向脚本添加了一些不必要的函数、指令。
- 检查页面中某些元素的存在(页脚上的版权文本)
- 在 PHP 中生成一些随时间变化的哈希值并放入 JS 中,检查此哈希值和当前时间的函数在哪里,是否
- 可以使用其他 JS 文件?或绑定到隐藏在非常常见的脚本中的元素的事件(例如在 jquery-min.XXXjs 文件中绑定一些操作,其中所有 jquery 都在其中。
它们是好主意吗?还有更多吗?我认为最重要的是您可以做的各种事情对于文档位置,这是唯一比在我们网站上的正常条件下工作有所不同的元素吗?
First, this could look like duplicate for
How to prevent your JavaScript code from being stolen, copied, and viewed ?
And other, but it's not.
I search for ideas that can do, that stealing of JS can be very hard
Some of my examples:
- of course obfuscate code
- use a
document.location
an check if some
letter in domain equals to letter on that position where script
normally works - use part of this location in function call, something like eval('first_part_of_function_name'+part_from_location+'third_pard(parameters)');
- store some important constant need in application in some element in your page-design, and get it from there in JS like
$('#header div.onright a rel')
- get some portion of script by AJAX and
eval()
it - add to script some unnecessary function, instructions.
- check for existance of some elements in page (copyright text on footer)
- generate some time-variable hash in PHP and put in JS, where will be function that checks this hash and current time to work or not
- maybe use of other JS files ? or events binded to elements hidden in very common scripts (like bind some action in jquery-min.X.X.X.js file where all jquery is.
Are they good ideas ? Have some more ? I think that most important can be variety of things wich you can do with document location, is that the only element that will be driffrent than working in normal coditions on our site ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
无论您的代码多么复杂,如果需要,可以使用抽象解释来阅读它,即自动捕获代码的本质。不了解内部结构、变量名称的代码(我假设您已经在使用最小化,例如使用 YUI 压缩器),文档、支持和概括对其他人来说毫无价值。
如果您的竞争对手(或潜在客户)窃取您的代码,请考虑起诉他们。如果是互联网上随机的某个人,你为什么要关心?
No matter how complex you make your code, it can always be read, if necessary with abstract interpretation, i.e. automatically capturing the essence of your code. Code without knowledge of internals, variable names (I assume you're already using minimization, for example with the YUI compressor), documentation, support, and generalization is worthless for anyone else.
If a competitor (or potential customers) of yours is stealing your code, consider simply suing them. If it's some random guy on the internet, why do you care?
又一个工具 http://closure-compiler.appspot.com/home
One more tool http://closure-compiler.appspot.com/home