代码之家  ›  专栏  ›  技术社区  ›  erotsppa

如何保护默认值?

  •  17
  • erotsppa  · 技术社区  · 15 年前

    7 回复  |  直到 15 年前
        1
  •  22
  •   benzado    15 年前

    如果数据不敏感(例如,默认字体大小),请将其存储在NSUserDefaults中。

    如果需要对用户进行安全保护(例如注册码),则需要使用自己的加密,然后将数据存储在任何您喜欢的位置。

        2
  •  9
  •   Matthias Plappert    15 年前

    我写了一个简单易用的小类别正是为了这个目的。在iPhone和macosx上工作,它是免费的,并且是麻省理工学院许可的。您可以在github找到它: SecureUserDefaults

        3
  •  4
  •   Jordan    15 年前

    你可以在iPhone钥匙链中存储真正安全的数据。可供选择的方法是您自己的加密类(可能会限制应用程序分发),或者通过一些其他编码(如nsdata、base64等)进行混淆。

        4
  •  4
  •   progrmr    15 年前

    NSUserDefaults应该只包含您希望用户能够更改的设置。应用程序内部数据不应为默认值。将内部数据保存在NSDictionary中,并将其写入apps documents或tmp文件夹中的单独文件。

    NSDictionary* dict = [NSDictionary dictionaryWithObjects:objs forKeys:keys];
    BOOL succeeded = [dict writeToFile:[self dbFullPathName] atomically:YES];
    
        5
  •  2
  •   Community ƒernando Valle    4 年前

    使用加密算法,如 AES 加密存储在NSUserDefaults中的数据。将加密密钥嵌入到应用程序中,无论是硬编码的还是通过对多个元素的连续操作计算的,都会成功阻止对存储的值进行任何编辑。为了使事情更简单,您应该编写一个包装器方法,该方法接受明文密钥和值,对它们进行加密,然后将它们存储在NSUserDefaults中,当然,在读回这些值时,也会反向执行相同的操作。但是请注意,考虑到加密/解密的时间,这将比不安全的存储慢,因此请考虑仅将此技术应用于应用程序中最敏感的配置选项。

        6
  •  0
  •   Gordon Seidoh Worley    15 年前

    老实说,这似乎不是问题,除非你想存储一些东西 NSUserDefaults 应该对用户保密。用户不会真正进入自己的首选项并直接编辑它们,除非其中隐藏着一些无法通过UI更改的内容(比如隐藏的首选项,苹果不会给你一个可以更改的UI,但如果更改了,会产生真实、稳定、有用的效果)。

        7
  •  -1
  •   Marcelo Alves    15 年前

    对于iPhone?他们不能改变这些变量,没有终端.app改变这一点(越狱设备除外,但这是苹果的问题,不是你的问题)。对于桌面应用程序,您可以使用NSData对其进行编码,它们将被归档为base64。