JavaScript-有没有办法能防止盗用js?

发布于 2016-12-25 05:28:45 字数 83 浏览 1538 评论 6

我有一个网站,用php做了一个动态的页头页尾,以js的形式嵌套在站点的静态页上,有没有办法能防止别的网站引用我这个js?而只能使我自己站点的页面可以引用

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

夜无邪 2017-11-07 11:41:11

一般有两步:
1.判断Referer是不是来自本站。
2.使用JS压缩工具: [JS压缩工具][1][1]: http://www.ostools.net/jscompress

甜柠檬 2017-09-09 14:10:25

我的办法是定义一些变量或属性(可以是 js 的也可以是 在html的属性),在你的位置的 页头或页脚上,在js用它,把一些核心函数引用变量或属性然后再 加密,这样基本上没人拷贝你的东西了。

灵芸 2017-07-15 21:29:40

js防盗链还是有点困难,毕竟是客户端代码。项目完成后把js和css压缩后传到服务器上,一方面可以优化页面,二来让增加别人理解的难度,特别是js。
不过话又说回来,要盗用你js函数或者方法的人技术很牛逼的少,牛逼的人还用看别人写的?
还有,我觉得没有必要防止盗链,以前有个高手看了我写的js,然后给我留言说有个地方的写法可以改进。

泛泛之交 2017-07-10 05:37:09

我所理解的盗用并不一定纯粹指盗链, 还包括直接拷贝JS,涉及侵犯知识产权方面。
JS是一种客户端脚本,要完全杜绝被盗用的现象很困难,但是可以采取一些方法增加被盗用和侵犯所有权的难度,比如:网站发布时对所有的JS进行混淆压缩,这样即使JS被盗用也比较难以理解代码逻辑(至少要弄明白被混淆过的JS要花非常多的精力)。

偏爱自由 2017-05-16 07:20:12

很抱歉,没有看清楚你问题的描述,只看标题,现在我来回答下你这个问题,

网站定义一个 privateKey

在每次响应页面的时候生成一个值,生成值的方式如下:

 $str = md5(privateKey . date('Ymdhi'));

将这个值写到页面引入js的那个地方,

 <script type="text/javascript" src="http://www.xxx.com/test.php?str=<?php echo $str;?>"></script>

在文件test.php中获取str,并且验证:

 if(!isset($_GET['str']) || md5(privateKey . date('Ymdhi')) != $_GET['str']){
exit();
}

....... 这里还继续写你之前的逻辑

方法说明: 即使盗链也不知道str该传什么值,即使知道也不知道你str的生成规则,即使知道你的str是由 key + time 生成也不知道 你的private 的值是什么。还有加time的意义就是让别这个值不唯一,从而让别人无规律可循,time 只精确到了 分钟,相信页面加载到引那个js的时间不会超过 1 分钟。。

这个方法用于防止普通的js外链,呵呵,先留着吧。

可以试试下边的方法:

 if(window.location.host.indexOf('.xxx.com') == -1) {
alert('该js文件禁止盗链..');
window.location.href = 'http://www.xxx.com';
}

在js文件的头部加入以上代码, www.xxx.com 是指你网站的域名。
只要进入if块中,随便你处理,我的做法是 提示,并且跳转到www.xxx.com下。。

=========================================================
上面的做法已经说的很不错,思路也很好。我谈一些简单的改进措施。
加密链的生成部分:

 $str = md5(privateKey . time());

可能稍微好一点,time()是unix时间戳,是按秒变化的。
另外如果你用可解密的算法进行加密,便可以在一个 php文件里面同时管理多个js的调用了。

上面说的js部分的思路也可以。不过可以做一些改进,
例如具窍其中的 alert(), 进行 js压缩, 将域名变成字符拼接而成或者用 字符code。
也可以将这些操作包装成一个函数,在多个部位调用。

这些已经很大的加大了盗用的难度。

不过建议楼主,可以在代码中加上一些作者信息,如果真的有很多人需要,可以考虑分享这些代码,可以写博客与其他人交流探讨。有时候,分享也是一种很不错的事情。

想挽留 2017-02-16 22:30:10

可以通过在HTTP请求的Referer来判断是不是来自你网站的域名,从而达到防盗的效果,当然Http的Referer也是可以伪造的,达到完全的防盗链是不太可能的,以下是通过PHP自身来判断客户端的Referer,当然也可以通过WebServer的ReWrite来限制访问。
<?php
if($_SERVER["HTTP_REFERER"] != 'www.abc.com'){

echo "请勿盗链网页";

}else{

//程序代码

}
?>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文