最近,我发现一个网站,其中用户的电话号码部分可见,您必须单击链接才能显示其余部分。该链接有一个加密的 ID,javascript 函数使用该 ID 来提取电话号码。
这可能看起来很有趣,但我看不到使用这样的东西的好处,因为我可以轻松调用该函数并提取电话号码。此功能仅用于防止搜索引擎对用户信息建立索引吗?
如果您好奇,这就是函数:
function d(num){
num=num.substring(2);
var c=parseInt(num[0]);
var n="";
var i=c+1;
while(i<num.length)
{
n+=num[i];
c=parseInt(num[i+1]);
i+=c+1;
i++;
}
return n;
}
链接的 ID 如下所示:X_31320224932121817272269264130************
最佳答案
是的,这是混淆而不是加密。事实上,它是完全独立的,因此它不可能是其他任何东西。
首先,它似乎没有使用任何显式 key 。将看似对称的 key 集成到数据中并不能保证数据的安全——即使它确实使用了 AES 等真正的密码。
其次,这似乎不符合 Kerckhoff's principle ,它指出加密方案应该是安全的,即使攻击者知道该方案。由于任何人都可以在没有 key 的情况下执行该函数并获得正确的结果,这显然违背了这一原则。你当然可以争辩说,如果没有 key ,该方案将永远打破这一原则。
我唯一能想到的是防止(不复杂的)网络爬虫,例如搜索引擎使用的爬虫。
关于javascript - 对用户信息使用客户端加密的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40548856/