Javascript缓存和保护
Javascript caching and protection?
我正在编写一个生成一些数据的JavaScript。我打算把它作为一个免费的web应用程序,向所有想要使用它的人开放。
但是我有很多的时间和精力来写这个脚本(主要是因为我想要它个人使用,我找不到任何有效的和恢复为这个)。我是一个初学者,我知道保护或混淆脚本是不可能的,因为你甚至不需要其他应用程序来解码混淆的信息,有很多方法,最懒的就是找到&;eval&;将js文件中的Word替换为"alert"当你打开html页面boom,你会收到一个弹出窗口与所有解码的代码…
我想问的是,当用户"另存为…"时,是否有办法防止页面与浏览器,JavaScript和CSS文件不保存在结构中。在过去,我试图用浏览器保存一些页面,我只能保存html文件(有时甚至没有所有的html信息,我怀疑有iframes),没有js和css…我尝试了一些网站下载器(sitesucker, deepvacuum等),甚至没有这个下载器,我能够下载文件。唯一的办法就是"检查"。该页面并手动下载,并手动创建文件夹结构。
就像我说的,我想给这个脚本完全免费的服务(我甚至会为它买一个域名),因为我用爱做的。我唯一的要求(为了获得某种个人自豪感)是,当人们想要使用它时,他们来到我的网站并实时制作它,如果他们"保存为……"该页面,他们可以保存生成的信息,不保存脚本,所以他们再次回来使用该服务。
有没有人可以提供一些提示和信息。链接、建议、专业和个人技巧?
我认为阻止访问浏览器中的Javascript代码是不可能的。我还认为,通过最小化JS代码,例如用谷歌的闭包编译器(高级选项),你可以尽可能多地保护你的代码。尽管代码可以原样复制,但不能通过合理的努力来理解或修改。
您可以通过一个JavaScript文件(加载器)下载所有JavaScript/CSS文件,如下所示。这样,下载者必须先执行JavaScript,然后才能知道包含哪些JavaScript/CSS文件,我认为他们不知道。正如我在评论中所说,我不完全确定这是否有效!
HTML:...
<script src="loader.js"></script>
<!-- no other JavaScript/CSS here -->
...
loader.js
:
window.onload = function() {
var head = document.getElementsByTagName('head')[0]; // the <head>
var scriptElement = document.createElement('script'); // create <script>
scriptElement.src = 'file1.js';
head.appendChild(scriptElement); // add <script> to <head>
var linkElement = document.createElement('link'); // create <link>
linkElement.setAttribute('rel', 'stylesheet');
linkElement.href = 'file1.css';
head.appendChild(linkElement); // add <link> to <head>
}
将代码转换为服务器端脚本(PHP, Python, c#等)。这是确保你的用户无法"窃取"你的作品的唯一方法。
JavaScript最终必须由我的浏览器解码,在那一刻,我也可以使用,没有办法阻止它,你只能让它更难。
但底线是:为什么你必须这样做?如果你只想要"个人的骄傲",不如把你的代码上传到像github或SourceForge这样的协作网站,在那里其他人可以欣赏你的工作,甚至可能为它做出贡献?
同样,如果你在GPL或CC许可下共享你的代码,每个重用你代码的人都必须给你署名(是的,一个人可以简单地窃取它,但这在你的情况下也是可能的)。
对于您的问题确实没有技术解决方案:如果用户可以执行您的javascript,他们将不得不以某种方式下载它。无论选择何种解决方案,任何对Firebug或Webkit检查器有足够了解的人都可以检索该脚本。您可以通过最小化来混淆它,但这不会阻止任何人按原样使用它。
你的问题的解决方案是法律上的,而不是技术上的。如果您在Javascript头文件中明确声明该脚本受限制性许可,则任何人复制它都将违反法律。如果你发现有人这样做,你可以:- 很好地要求他们从他们的网站删除脚本
- 威胁起诉?
(顺便说一下,如果我可以在这里给出我的个人意见,我有很多个人的骄傲,在提供任何人都可以重用的代码…你可以在脚本的头部包含你的名字和你的网站链接:删除归属和版权声明被认为是非常糟糕的形式(并且可能是非法的)
- 如何在从浏览缓存加载页面时执行javascript
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 缓存谷歌地图数据
- 防止jQuery Mobile中的ajax缓存
- image.onload事件和浏览器缓存
- Javascript清除缓存以清除基本身份验证凭据
- 使用jquery.load('pageName')方法时,未从应用程序缓存加载Html页
- 将脚本缓存到本地存储的basket.js概念仍然是一个好主意吗
- 阻止选项卡缓存jquery ui
- 如何使用Passport保护路由终结点
- 强制浏览器更新缓存的HTML5视频对象
- 如何保护节点webkit应用程序上的字体
- 我可以在Nodewebkit中保护javascript以外的资源吗
- Javascript:'受保护'范围界定
- 在Javascript中使用全局变量作为缓存是很好的
- 通过网站禁用屏幕保护程序/睡眠模式
- 缓存!saveLocations()和addLocation()函数有什么区别
- 微软边缘浏览器缓存中的RESTful Angular应用程序
- Javascript缓存和保护