如何向用户隐藏javascript变量
How to hide javascript variables to users?
在刽子手游戏中,单词在一个数组中,然后用户可以访问所有的单词:http://www.mygame.com/js/functions.js有没有办法让用户看不到它们(不使用数据库)?
客户端的最佳方式
使用MD5哈希!
一般最佳选择
让后端处理验证。
或者
你可以从服务器上获取它们。并将它们直接加载到闭包中。
这样,它就不能作为公共变量使用,单词会在最后一刻发送。要添加到其中,可以对其进行模糊处理,或者让后端处理验证。
var validate = (function(){
var words;
// some ajax code to load the words...
return function(word){
// loop through words to see if it is there.'
return true;
}
})();
此外,正如其他人所提到的,还有一些混淆。这可能是你所能做的,让它变得有点"困难"。但不管怎样,只要你在客户端进行验证。
基本上没有。由于代码将在客户端运行,即使您对其进行模糊处理,用户也始终可以访问这些值。如果您使用某种模糊处理方法,您可能会让用户更难访问它,但您绝对无法向他完全隐藏您的数据
作为另一种解决方案,您可以将此验证逻辑移动到服务器,并将您的信息发送到服务器,以检查其是否有效。
编辑:如果不能将验证转移到服务器,那么使用André答案中建议的MD5或SHA1之类的哈希实际上是明智之举。你也可以添加盐来保护它免受彩虹桌的攻击。
混淆本身并不是解决问题的办法,因为这会混淆变量,而您要做的是加密变量中的字符串。字符串不会混淆。
我能给出的最好的非服务器端验证答案是:你可以用几种方式中的任何一种手动加密字符串。最简单的方法之一是将字符串中的每个字符与某个值异或(在将其放入数组之前,然后在任何时候引用该字符)。这会让用户无法读取字符串,但阅读代码的人会看到你在做什么,然后可以解决它。尽管如此,这种加上模糊处理可以解决你的大部分问题-如果有人想极端地对你的代码进行解密和解密,以在Hangman作弊,他们手头的时间太多了。
您可以混淆代码。例如:http://www.javascriptobfuscator.com/Default.aspx
您的单词需要存在于服务器上。这不仅仅是浏览器。如果你想让用户暂停游戏并稍后完成,你只需要一个数据库,但这是一个刽子手,所以这可能没有必要。
混乱是你的最佳选择。如果你要求你的游戏在客户端运行,那么一切都需要对他们可用。
虽然你不能完全保护你的数据,但你可能会让别人很难弄清楚它是什么。如果这更容易的话,我可能会用正常的方式玩游戏,除非贵重物品处于危险之中。
如果有人真的想找到答案,他们会花时间和精力去做。如果我有一百万观众,我认为阻止90%的人作弊是有价值的。
- 将函数的上下文应用于javascript变量
- 如何通过ajax刷新JSF填充的javascript变量
- Javascript变量赋值|
- 限制javascript变量的最小/最大整数
- 来自文本输入null的html javascript变量
- 访问jsrender模板中的全局javascript变量并更新它
- 从数据库中获取数据并插入JavaScript变量
- 如何将javascript变量传递到Meteor Spacebars模板中
- 将JavaScript变量保存到Rails模型
- 在if语句下的html中使用javascript变量
- Javascript变量分配-按类别
- 操作javascript变量[HTML]以只显示文本
- 无法比较javascript变量
- 如何将smarty变量与javascript变量进行比较
- 如何使用PHP将javascript变量添加到mysql数据库中
- Javascript 变量使用 jquery 查找变量
- 重新加载页面时Javascript变量发生变化
- 在asp classic中使用javascript变量
- 全局Javascript变量变为null
- 如何向服务器端提交javascript变量