我正在开发一个应用程序,虽然它本身没有“凭据”,但它会为每个用户分配一些识别信息以用于远程服务。为了安全起见,此信息应尽可能不可见。甚至用户也不应该能够访问此信息。对于在应用程序中为用户保存此信息的位置,我还没有找到明确的答复。1)考虑到数据的敏感性,钥匙串(keychain)似乎是合适的地方,但这些数据并不完全是用户名和密码。这有什么不同吗?2)据我所知,只要您不通过设置View公开它,NSUserDefaults似乎也是私有(private)的,但我认为不如Keychain本身安全。意见?在此先感谢您的帮助! 最佳答案 我知道这
我知道钥匙串(keychain)项目可以被添加它的应用删除。但即使他卸载了应用程序,它们也会保留在设备中。用户可以删除任何不需要的钥匙串(keychain)项吗? 最佳答案 没有。钥匙串(keychain)项目在iOS沙箱中,用户无权删除不需要的钥匙串(keychain)项目。这些只能通过API访问。由于iOS提供API来访问沙箱中的钥匙串(keychain)项,因此应用程序可以使用这些API来访问钥匙串(keychain)项。但是根据https://developer.apple.com/library/ios/documenta
在一家公司工作,我们开始拥有许多小应用程序,每个应用程序都有自己的登录屏幕。这意味着每当有人更改密码时,他们都必须为每个应用重新输入密码对用户来说可能会很麻烦,尤其是当我们的政策是让用户的密码每3个月更改一次并且有6个或更多的应用程序需要输入密码时有没有人想出解决这个用户只需输入一次密码的问题的方法?我在想我可以拥有一个专门用于身份验证的专用应用程序,然后在可能的情况下进行某种进程间通信同样,针对iOS执行此操作。我知道在Android上这不是问题,因为开发人员可以在设置屏幕中添加帐户。然而,iOS是另一种野兽*请注意,这些是企业内部应用程序。在应用商店中不面向公众
我正在尝试学习如何使用NSURLSession处理身份验证挑战。我以前从未做过任何与安全网络相关的事情。我一直在阅读AuthenticationChallengesandTLSChainValidationApple的NSURLSessionProgrammingGuide部分提到了对象NSURLCredentialStorage,但在它的引用中我没有得到关于为什么要使用它的进一步描述。NSURLCredentialStorage和Keychain有什么区别?安全地处理用户名和密码的最好方法是什么?我正在寻找一个使用NSURLSession以及NSURLCredentialStorag
Realm有一个伟大的writeup和samplecode用于加密您的数据库。本文档和示例按预期工作,直到您在以下情况下尝试解密Realm:用户的手机上有密码设备已锁定当收到远程通知时,您的应用正在尝试使用Realm发生这种情况是因为我们无法访问钥匙串(keychain)来获取(或创建)加密/解密Realm的key。默认的kSecAttrAccessible值为kSecAttrAccessibleWhenUnlocked我认为有几个选项:将kSecAttrAccessible更改为kSecAttrAccessibleAlways。我不喜欢这个,因为它a)太开放b)它是slatedtob
我想使用以下访问控制向secItemAdd添加一个项目SecAccessControlRefsacObject=SecAccessControlCreateWithFlags(kCFAllocatorDefault,kSecAttrAccessibleAfterFirstUnlock,/*kecAccessControlTouchIDAny|*/kSecAccessControlApplicationPassword,&error);所以它基本上要求密码以将项目添加到钥匙串(keychain),这很完美,但是当我想访问这个项目时,我想跳过UI身份验证,所以我想如何使用kSecUseAu
我正在使用FirebaseCloudMessaging向许多iOS应用程序发送推送消息。我的FCM设置包含一个Firebase项目和多个Firebase应用程序:FBProjectApp1AndroidApp1iOSApp2AndroidApp2iOS...现在的问题是,发送到我的一个iOS应用程序的FCM消息最终被另一个iOS应用程序接收(发送到App1iOS-App2iOS获取消息)。为了调试这个问题,我遵循了这个优秀的调试指南:https://firebase.googleblog.com/2017/01/debugging-firebase-cloud-messaging-on
在我的设备上安装我的应用程序时出现错误:TheexecutablewassignedwithinvalidentitlementsTheentitlementsspecifiedinyourapplication'sCodeSigningEntitlementsfileareinvalid,notpermitted,ordonotmatchthosespecifiedinyourprovisioningprofile.(0xE8008016)我有一个有效的“Entitlements.plist”文件。如果我从文件中删除“Keychain”授权,它就会成功安装。我的钥匙串(keychai
错误您之前可能已经看到有关此错误原因的问题:iPhonehasdeniedthelaunchrequest.该错误发生在任何Xcode项目中,所以问题与项目本身无关。这是不同的,我不想使用一些解决方法。尝试解决我的问题我进入了我的Keychain,因为自从我注册了我的ProvisionalDeveloperCertificate已经一年了,该证书现已过期,所以我删除了它:暂时退出Xcode并删除Signing仍然无效。然后我尝试通过转到thislinkontheAppleDeveloperwebsite来更新证书,但我得到一个错误:当我点击网站上的某些页面时,我通常需要重新登录,但我不
我很难找到有关applicationProtectedDataWillBecomeUnavailable和applicationProtectedDataDidBecomeAvailable实际发出保护信号的明确文档。session209似乎暗示委托(delegate)方法暗示钥匙串(keychain)和protected文件都变得不可用,但文档仅引用文件。我将我的钥匙串(keychain)设置为kSecAttrAccessibleWhenUnlockedThisDeviceOnly文档表明这意味着钥匙串(keychain)仅在应用程序位于前台时可用,但后来我让我的应用程序尝试在app