【问题标题】:Making a game - What is the advantage of the secure variables?制作游戏 - 安全变量的优势是什么?
【发布时间】:2016-06-14 13:38:56
【问题描述】:

我在 Unity 中制作了 Game,其中包含许多公共和私有变量和函数。我希望游戏安全,所以我从统一资产商店https://www.assetstore.unity3d.com/en/#!/content/10395 购买了反作弊工具包。所以我的问题是我需要安全的私有变量吗?如果是,那么私有变量有什么用?它们有什么优势(在安全方面)?

【问题讨论】:

  • 你读过公共变量和私有变量的区别吗?甚至可以阅读 C# 教程?
  • 这个问题获得了赞成票,真是太疯狂了!多么美好的世界。
  • 如果您的游戏需要“安全”,您必须从资产商店获取著名的 Anti-Cheat-Tool-Kit。这是“每个人都在使用”的东西之一——它无处不在。如果没有偏好混淆等安全性,你就不可能拥有一款游戏,而自己编写代码来做到这一点是完全没有意义的。大家只用ACTK

标签: c# security unity3d private


【解决方案1】:

我需要保护私有变量吗?

不,公共变量和私有变量都具有相同的安全防御(或者更确切地说,没有安全防御)。如果攻击者可以查看或修改 public 变量,他们就可以查看或修改 private 变量。

访问修饰符的存在是为了方便程序员并帮助做出架构决策。

【讨论】:

    【解决方案2】:

    私有和公共标识符与安全性无关,而是方法/变量/任何东西的可见性/可访问性。

    私有 var 向开发人员传达此变量仅由其类使用,不应在其他任何地方触及/访问。

    公共 var 表明变量在其他地方被访问,变量的值对部分代码库/用户的功能很重要

    【讨论】:

      【解决方案3】:

      变量的状态,无论是公共的、私有的还是受保护的,仅决定谁可以访问变量内部的信息,或者谁可以执行特定操作(对于函数)。 私有变量也只能被它们的包含类访问。

      【讨论】:

      • 不是投反对票的人,但我认为原因是这种说法:“变量的状态......只决定谁可以访问变量内的信息”在技术上是不正确的。使用反射或调试器从完全不同的类访问/修改私有变量非常容易。
      【解决方案4】:

      public 和 private 关键字仅表示“假定”可见或不可见的内容。在安全方面,总是可以使用反射调用私有变量或方法(例如)https://en.wikipedia.org/wiki/Reflection_(computer_programming)

      【讨论】:

        猜你喜欢
        • 2016-10-17
        • 2018-11-04
        • 1970-01-01
        • 2010-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-06
        • 2010-09-28
        相关资源
        最近更新 更多