【问题标题】:How to disguise url in javascript?如何在javascript中伪装url?
【发布时间】:2018-12-27 04:05:58
【问题描述】:

假设我有一个 URL 作为网页脚本的一部分,如下所示:

<script>
var url = "http://www.example.com";
</script>

我不希望人们能够轻松地阅读此 URL。显然,我意识到一旦它到达客户端,他们将能够对我的代码进行逆向工程。

但我正在寻找一种轻量级的方式来掩饰这一点,这样人们就不能只使用 view:source 轻松查看/单击它。

【问题讨论】:

标签: javascript obfuscation


【解决方案1】:

MDN docs,可以使用base64:

// Encoding
var encoded = btoa(stringValue);

// Decoded
var decoded = atob(stringValue);

任何知道如何访问浏览器控制台的人都可以轻松解码。

【讨论】:

  • 它总是很容易解码,因为问题只需要 javascript 答案,而 javascript 是客户端代码
  • @user1509104 完全正确!我不会推荐任何安全的东西,这就是我的意思
  • FWIW 混淆是从不安全的。
【解决方案2】:

Jscrambler 是我发现如果你想在你的代码中隐藏任何东西的最佳选择。您还可以添加其他安全层,使逆向工程不可行并使代码检测调试。

【讨论】:

  • 问题不是为了保护代码或增加安全级别,而是在代码内部通过一种轻量级的方式来伪装“查看:源”中的url
  • 没错,隐藏网址,这是我的答案
  • 通过研究,Jscrambler 似乎不是一种伪装 url 的“轻量级”方式
【解决方案3】:

首先:

这是安全的,我会推荐它用于任何与安全相关的事情。

但如果你必须这样做:

您可以使用javascript obfuscator,这基本上会使您的代码不可读,但它仍然可以正常工作。

记住不可读不等于不可解码

它会变成你的 javascript:

var url = "http://www.example.com";

进入:

var _0x5386=["\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x65\x78\x61\x6D\x70\x6C\x65\x2E\x63\x6F\x6D"];var url=_0x5386[0]

这是 100% 相同的代码,只是不可读:

var _0x5386=["\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x65\x78\x61\x6D\x70\x6C\x65\x2E\x63\x6F\x6D"];var url=_0x5386[0]

console.log(url); // http://www.example.com

如果您想对 url 进行编码,请查看 Nick Bull 的答案,但是如果您阅读 javascript 代码,这仍然会让您的 url 肉眼可读。

此方法对控制台窗口也有一个弱点,因为任何人都可以输入变量“url”并接收 url。

总而言之,这种方法不会将您的网址保留为纯文本,但它确实具有与尼克布尔的答案相同的控制台缺陷。

但同样,这是安全的。

【讨论】:

  • 如果您有适当的 JavaScript 保护将是安全的,javascript 混淆器很容易被逆转。看看jscrambler.com
  • 不知道为什么这个答案被否决了。这是迄今为止唯一正确的答案恕我直言。与 Jscrambler 相比,它是超轻量级的,并且使代码不易阅读,这正是 OP 所要求的。小心使用 base64 和其他编码,有时并非所有浏览器都支持它们。但这是简单的 ASCII 混淆,应该适用于任何地方。
  • 是否有任何一种安全的混淆替代方法,但做同样的事情?或者混淆本质上是不安全的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
  • 2021-09-30
  • 1970-01-01
  • 2012-01-25
相关资源
最近更新 更多