Tag: 安全

在iOS上存储身份validation令牌

我正在构build一个iOS应用程序,用户使用我的Web服务进行身份validation。 我不希望他们每次启动应用程序(令牌持续一个月)login。 所以我想把这个caching在设备的某个地方。 安全地做到这一点的最佳方法是什么? 我可以只依靠应用程序保持暂停状态,并将令牌保存在“内存”中吗?

强制应用程序在iOS 8中使用Apple Keyboard

如何让我的应用程序的UITextfields只使用iOS 8中的苹果键盘? 我不想让第三方键盘,期间。 我知道这可能是不好的用户体验,所以请不要与我讨论这一点:) 我知道我可以将securedEntry属性设置为true以强制Apple键盘( http://www.imore.com/custom-keyboards-ios-8-explained )。 也许iOS 8会让我设置这个属性,而不是屏蔽文本?

CRL和OCSP行为的iOS / Security.Framework?

我试图找出什么样的iOS的政策是在使用Security.Frameworkvalidation证书撤销证书。 我无法在iOS文档中find关于此的信息。 在目前我正在处理的iPad项目的背景下,有理由要求检查某些证书的撤销状态。 任何想法如何强制使用Security.Framework证书validationCRL / OCSP检查? 还是我需要“回退”到OpenSSL来完成这个? 似乎在Mac OS X 10.6 CRL / OCSP检查也是可选的,必须通过Keychain Access手动开启。 马亭

没有密码回退的Touch ID的SecItemCopyMatching

我正在使用SecItemCopyMatching来获取由Touch ID保护的钥匙串项目。 但是,如果Touch ID解锁失败(或者用户select“input密码”),我想呈现我自己的PINinputUI。 我不希望用户在任何时候出现系统密码inputUI。 LAContext的evaluatePolicy方法提供了这个,但是不提供任何实际的钥匙串安全性,仅仅是本地authentication。 因此,我不会使用LAContext来实现这一点。 这可能与SecItemCopyMatching ?

访问令牌持久性最佳实践(iOS)

应该访问像Twitter和Facebook的服务令牌encryption? 特别是,应该将令牌存储在设备的Keychain与UserDefaults之间? 如果用户的设备被偷走,可能会出现什么样的安全问题 这是我到目前为止所提出的。 优点钥匙串:encryption 缺点:没有办法清理用户删除应用程序 UserDefaults的优点:保持在应用程序内部。 缺点:没有encryption。

iOS – 从指数+模数创buildSecKeyRef

我想通过指数和模数作为私钥来解密iPhone上的RSA编码的blob。 在Java中(使用javax.crypto),可以通过如下代码轻松实现: // 1) key RSAPublicKeySpec keySpec = new RSAPublicKeySpec(myModulus, myPublicExponent); KeyFactory fact = KeyFactory.getInstance("RSA"); Key pubKey = fact.generatePublic(keySpec); // 2) cypher Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.DECRYPT_MODE, keySpec); // 3) use cypher to decode my block to an output stream 但与iPhone安全API我不能创build一个SecKeyRef(密钥),而不是通过生成一对或导入证书,我没有/要。 有没有办法创build一个模数+指数手动键? 如果是这样,你可以给我一个线索,如何? 提前致谢

如何在iOS / Cocoa应用程序中安全地包含密钥/签名

我想包括一个密钥到一个iOS应用程序,以便应用程序可以“certificate”某个服务器的请求来自应用程序本身而不是其他系统。 我知道,简单地将密钥硬编码到代码本身是非常脆弱的,因为任何人都可以越狱他们的手机,并将GDB附加到我的应用程序的进程来获得密钥。 有没有更安全的方法来做到这一点? 是否可以充分混淆密钥以使其几乎不可能? 我相信这是与序列号validation类似的问题。 不幸的是,这似乎是定期和容易破获。 有没有解决办法? 所有与我的服务器通信都将使用HTTPS完成,因此至less在中间的攻击中嗅探/人应该不是一个问题。 谢谢,M

从KeyChain保存并加载 Swift

如何简单地在钥匙串中存储一个string,并在需要时加载。 有几个SO解决scheme主要是指Git回购。 但是我需要最新的Swift上最小和最简单的解决scheme。 当然,我不想在我的项目中添加git框架来存储密码。 也有类似的解决scheme通过KeyChain保存和检索值 ,这不适合我。 厌倦了编译器错误。

iOS中反编译的可能性以及如何防止它们

我最近读了关于iOS应用程序的反编译,现在我真的很关心它。 如下面的post( #1和#2 )所述,可以反编译分发到App Store的iOS。 这可以通过越狱完成,我认为应用程序从内存复制到硬盘。 有了一些工具,就有可能 读出string(string工具) 转储头文件 反向工程到汇编代码 似乎无法逆向工程到Cocoa代码。 由于安全性是我创build的软件的一个function,我想防止不好的用户重build我的安全function(使用密钥encryption或login到网站)。 所以我想出了以下问题: 有人可以重新组装我的保存和encryption或login方法吗? 我的意思是他能明白究竟到底发生了什么(保存在哪个path上,哪个键被使用等等,什么凭证是login到哪个网站的)。 我没有大会的理解,它看起来像我的matrix… 如何安全地使用不能用string读出或在程序集中读取的NSStrings ? 我知道可以对string进行混淆,但是这还不够安全,不是吗?

处理连接到Web服务的原生应用程序的loginfunction

经过广泛的研究,我一直没能find明确的答案。 首先,任何人都可以告诉我一个本地iPhone应用程序连接到Web服务处理“loginfunction”的基本逻辑? 例如,facebook应用程序在启动后立即要求input用户名和密码,从那里您可以在应用程序的所有后续视图中完全访问您的帐户。 每次你发布的东西等,你不必重新login…有人可以向我解释这个过程? 是通过cookies还是会话完成的? 钥匙扣是否涉及? 我现在有一个半工作的应用程序,但我几乎积极,我可以做得更好,更安全。 这是我在做什么: 1)使用mysqlbuild立一个本地服务器和一个用户数据库(用户名和密码列和其他表等)。 写了一个简单的Web服务,它接收POST数据并查询数据库以检查用户名是否存在,如果是,则密码相同。 使用sha1哈希。 相应地回传真或假。 2)我的应用程序有一个初始login屏幕,有2个文本框(1个用户名,1个用于密码)和一个调用login方法的button。 我的login方法执行以下操作: 用一个string初始化* NSURL(我的web服务的URL:@“http://webservice.com/login.php”) 用这个url初始化一个* ASIFormDataRequst 使用密码和电子邮件文本在文本字段中设置post值 设置委托给自己 在请求上调用startAsycronous 实现requestFininshed方法来检索web服务的“true”或“false”echo-ed 取决于响应,前进到下一个视图,否则,发出警告,通知用户重试 所以,我的问题是: 1)这是安全的发送密码? (通过ASIHTTPRequest和POST方法?)2)在接下来的视图中,用户应该能够与他们的账户进行交互(例如在Facebook上发布消息和状态以及图片)如何保持用户的login状态用户与数据库交互的时间,我可以确保用户仍然login,并且它是相同的用户? 例如,我能想到的唯一方法就是如果我用用户名和密码在用户设备上存储一个cookie,然后每次与Web服务/数据库进行交互,它都会使用cookie值(用户名和密码)。 这样做有更好的方法吗? 也许会话或cookies? 或通过使用钥匙串? 谢谢你们的帮助,对于长期的问题抱歉!