Tag: 安全

在iOS上使用SecCertificateCreateWithData创build证书

我想在iOS应用程序中以编程方式创build证书。 我能find的最接近的API是SecCertificateCreateWithData ,它需要一个DER编码的二进制input。 鉴于我有所需的所有数据作为运行时对象,我怎样才能构造DER编码的二进制数据input?

在iOS 7中,AES解密在iOS 8/9中具有不同的行为

以下方法在iOS 7上运行时会返回不同的结果,而不是在iOS 8/9上运行。 + (NSData *)decryptData:(NSData *)data key:(NSData *)key iv:(NSData *)iv; { NSData *result = nil; // setup key unsigned char cKey[FBENCRYPT_KEY_SIZE]; bzero(cKey, sizeof(cKey)); [key getBytes:cKey length:FBENCRYPT_KEY_SIZE]; // setup iv char cIv[FBENCRYPT_BLOCK_SIZE]; bzero(cIv, FBENCRYPT_BLOCK_SIZE); if (iv) { [iv getBytes:cIv length:FBENCRYPT_BLOCK_SIZE]; } // setup output buffer size_t bufferSize = [data length] + FBENCRYPT_BLOCK_SIZE; void *buffer = […]

我如何只允许从我的iOS应用程序访问我的MySQL数据库? (使用webapp作为数据库的网关)

我的iOS应用程序需要连接到一个MySQL服务器。 为了做到这一点,我想创build一个Web应用程序,作为客户端应用程序和服务器端数据库之间的中间人。 我的担心是有人可以简单地找出我的应用程序使用的URL并传递他们自己的URL参数 – 而且由于Web应用程序不知道是否从我的iOS应用程序发送了合法的数据,而只是从正确input正确制作的URL任何网页浏览器,系统都会受到攻击。 比方说,我有一个PHPfunction,标记为“已validation”(在我给他们发送电子邮件validation码后)的用户。 这是非常标准的东西,但是阻止某人从Web浏览器发出同样的请求呢? 当然,应用程序用来进行数据库查询的用户将拥有有限的权限,因此数据库的其余部分不会有风险。 但是,即使用户从应用程序外部激活其帐户也是灾难性的。 我想到的select是使用https,以便即使用户计算出URL,他们也不会知道密码,并且由于它从头到尾都是encryption的,所以不能嗅探它。 不幸的是,对于一个贫穷的大学生来说,https可能是昂贵的,所以如果存在的话,我想要一个替代品。

iOS InApp购买回执validationiOS 7

我已经阅读过几次苹果的文档,而且我也没有从中得到太多的东西。 所以我希望这里有人知道如何处理收据validation: 我知道在iOS 6之前有一个问题。但是现在在iOS 7上需要validation吗? 它真的增加了额外的安全性吗? 如果苹果更改收据的格式(在设备上parsing它们),似乎会导致问题。

如何为移动应用程序创build无密码login

我在构build移动应用程序和API之间build立某种无密码login(假设我可以控制两者)进行构build。 其动机是,必须login非常恼人的用户和安全风险(例如,用户将重用现有的密码),我希望用户能够立即开始使用该应用程序。 我想知道是否有一些技术可以工作。 例如: 在移动设备上生成并随机login/密码并将密码存储在钥匙串中。 使用此login名/密码组合注册API。 这将返回一个令牌。 令牌用于随后的调用 缺点是: 如果用户删除了应用程序,login/密码可能会丢失(这可以通过使用iCloud来存储login信息来缓解 – 但这对密码不好)? 密码存储在设备上(但是它在钥匙串中) 所以我的问题:这样的事情是否可行和安全? 有没有已知的技术来做到这一点?

安全的安全来禁用CSRF令牌的JSON轨道电话?

我有一个现有的轨道后端网站,使JSON调用服务器。 现在,我正在开发一个移动iOS应用程序来使用相同的后端,并在JSON中发送调用。 但是,移动请求失败: WARNING: Can't verify CSRF token authenticity search周围的stackoverflow,许多人build议禁用csrf检查json调用通过使用这样的事情: # Or this in your application_controller.rb def verified_request? if request.content_type == "application/json" true else super() end end 但我的问题是,我不明白这是如何防止以json格式的csrf攻击? 攻击者总是可以从他们的站点发送一个json请求到我们的端点。 任何人都有这方面的见解? 我找不到任何明确的答案。

从客户端validation应用内购买收据

我几乎读了所有关于validation应用内购买的答案,实际上我已经以服务器端的方式实现了它。 但是,pipe理服务器有时可能太昂贵了,理论上你可以从你的应用程序进行validation:基本上只是发送一个JSON到苹果,并得到答案。 当然我知道在越狱的设备上,收据可能是假的(这就是为什么你要validation它们),但是(我请求原谅我的无知)为什么我不能信任到苹果服务器的https连接? 我的意思是,如果用户破解我的应用程序,没有什么真正的方法可以确定任何东西,但如果黑客是一种通用的方法来提供假的收据苹果testing可能是正确的? 要清楚的是,收件人的应用内validation的安全级别是多less? 它可以添加一些保护程度os是无用的吗?

正确和安全地存储应用程序内购买的方式

什么是在设备上存储应用程序内购买的最佳方式,以便购买也可以离线访问,但购买的安全性不会受到影响?

iOS钥匙串使用什么encryptionalgorithm来保护数据?

广泛的谷歌search后,我没有设法find这个问题的答案1 ,这是令人惊讶的,因为'安全通过默默无闻'是不是真的安全… … 有没有可靠的来源回答这个问题(如iOS的authentication应用程序,源代码或类似的)? 1唯一能提及的是它可以使用3DES。

是否有可能更新Keychain项目的kSecAttrAccessible值?

是否有可能更新Keychain中现有项目的属性kSecAttrAccessible的值? 该项目被添加到钥匙串后,似乎无法更改。 以下步骤备份我的假设。 将一个新项目添加到钥匙串: NSData *encodedIdentifier = [@"BUNDLE_IDENTIFIER" dataUsingEncoding:NSUTF8StringEncoding]; NSData *encodedPassword = [@"PASSWORD" dataUsingEncoding:NSUTF8StringEncoding]; // Construct a Keychain item NSDictionary *keychainItem = [NSDictionary dictionaryWithObjectsAndKeys: kSecClassGenericPassword, kSecClass, encodedIdentifier, kSecAttrGeneric, encodedIdentifier, kSecAttrService, @"USERNAME", kSecAttrAccount, kSecAttrAccessibleWhenUnlocked, kSecAttrAccessible, encodedPassword, kSecValueData nil]; // Add item to Keychain OSStatus addItemStatus = SecItemAdd((CFDictionaryRef)keychainItem, NULL); 稍后,将属性kSecAttrAccessible从kSecAttrAccessibleWhenUnlocked为kSecAttrAccessibleAfterFirstUnlock : NSData *encodedIdentifier = [@"BUNDLE_IDENTIFIER" dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary […]