【问题标题】:Get length of a function in javascript在javascript中获取函数的长度
【发布时间】:2011-08-27 11:10:38
【问题描述】:

我正在使用 nodejs 和 nowjs。我想获取在服务器上调用该函数的函数的主体长度并检查它是否相同。防止用户操纵客户端功能。并且可能排除可能发生变化的变量。有没有办法在 javascript 中做到这一点?

例如

客户

now.sendMessage() {
    //Some code...
}

服务器

everyone.now.sendMessage() {
    //Check that the code is the exact length 
    //as the function body written in the clientside script
    //To see if it has been manipulated...
    if (codelength === ?) {
        //execute code
    } else {
       //return error
    }
}

【问题讨论】:

  • 没有。你试图达到的目标是不可能的。
  • 想一想,整个事情的核心仍然是使用 HTTP。用不同的语言编写脚本并在服务器上发送“一些数字”非常容易。

标签: javascript node.js nowjs-sockets


【解决方案1】:

试试这个:

   var codelength =  (String(yourfunction_name).length);

有了这些知识,您还可以在函数体上计算一些哈希值并进行比较。

【讨论】:

    【解决方案2】:

    可以做到:http://jsfiddle.net/RsrCB/1/.

    但在实践中,它并不可靠。无法检查 JavaScript 代码的完整性有几个原因:

    • 很容易混淆它
    • 覆盖完整性检查代码很容易

    【讨论】:

    • 不,因为即使在我的回答的原始版本中,我也表示不应该这样做。
    【解决方案3】:

    您现在使用错误。你不能信任用户。

    现在您只需在客户端上定义过程并使用一些数据调用它们。您不会像这样传递敏感数据。

    您发送给客户端的任何数据都属于客户端,您无法屏蔽劫持。

    现在在下面使用 websockets 或 XHR。您只需在套接字上向客户端发送数据,它就可以被拦截。

    【讨论】:

    • 我不确定我是否理解这一点。敏感数据是什么意思?如果这只是留言簿记录之类的?那我应该如何使用nowjs?我发布了一个关于此的新问题。谢谢
    • @George 听起来您正在尝试实施某种安全措施。
    猜你喜欢
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 2018-02-15
    • 1970-01-01
    • 2023-03-26
    • 2013-10-31
    相关资源
    最近更新 更多