Articles of 安全

在我的应用中使用屏幕锁定

是否可以使用用户设置到手机的默认安全设置作为我的应用程序的锁定或登录机制? 我的意思是,当我们重置手机时,它会询问手机密码或图案。 是否有可能使用默认的android密码或用户设置的模式登录我的应用程序? 我的目标是绕过开发工作并使用一些标准的身份validation方式,而不会让用户记住另一个新密码。 注意:我知道我可以以编程方式锁定屏幕。 但相反,我想在执行任何关键操作之前使用锁作为validation。 (就像设置在重置手机之前要求输入密码一样。)

如何保护Google In-App Billing v3免受代码黑客攻击?

Google提供了一个方便的API,可以在Android应用上实现“应用内购买”function。 除了这些文档之外,还有一个专门的章节,介绍了该系统的安全级别以及设计它的好方法。 网络上有很多关于这个步骤的文章,从公共密钥保护到远程服务器validation ,但我真的不明白为什么所有这些技术应该在主要问题是简单的代码黑客攻击时才能工作。 也许有一个更好的术语来解释它,但让我做一个快速的例子。 我的申请的基本思想是,在某些时候,除非他购买了物品,否则用户无法继续进行。 就像是: public void accessTheVeryCoolFeature() { boolean haveIt = checkIfPurchased(“verycoolfeature”); if (haveIt) { // YEAH! let’s open this very cool feature I paid 200 bucks for } else { // ok… where is my wallet? boolean purchased = startPurchaseFlow(“verycoolfeature”); if (purchased) { // my wallet is now empty but happy […]

存储JWT令牌的位置?

我正在实现需要身份validation的REST服务。 我正在使用JWT 。 现在,Android App在登录时发送请求,获取令牌,并且必须在每个后续请求的标头中发送令牌。 我的问题是,如何存储令牌,或者我应该在哪里存储它? 共享偏好 SQLite数据库 在一个文件中 最好的做法是什么? 或者我是以完全错误的方式来做这件事的?

如何在Android上安全地存储模数,公共指数和私有指数?

我已经给出了模数,公共指数和私有指数,我需要在Android上安全地存储这些值。 我怎样才能做到这一点? 大多数示例都是在不获取n,d,e参数的情况下创建公钥和私钥。 我已经给出了这些n,e,d值并想要安全地存储它们,然后使用这些值来创建我的ICC公钥证书并且还要签署我的动态数据。 我怎样才能做到这一点?

Android – 在sqlite数据库中存储敏感数据

我需要将敏感数据存储在Android应用程序的sqlite数据库中。 我怎样才能确定这些数据是否安全? 我知道我可以使用密钥加密数据,但是我在哪里存储该密钥? 我也不想要求用户填写密钥,我只是想让它自己动手。 因为我害怕逆向工程,所以我也不想在代码中加入加密密钥。 我发现了SQLCipher 。 它说这是加密数据库中数据的一种非常安全的方式,但为什么会这样呢? 我是否还需要保留钥匙才能解锁该信息? 或者这是确保数据安全的完美方式吗? 如果不是,那么在sqlite数据库中存储敏感数据的(几乎)防故障方法是什么?

如何使用X509TrustManagervalidationandroid.net.http.SslCertificate?

Android的WebViewClient在遇到不受信任的证书时会调用onReceivedSslError 。 但是,我在该调用中收到的SslError对象没有任何公共方式来获取底层X509Certificate以对现有的TrustStoreManager进行validation。 查看源代码,我可以这样访问X509Certificate的编码字节: public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { Bundle bundle = SslCertificate.saveState(error.getCertificate()); X509Certificate x509Certificate; byte[] bytes = bundle.getByteArray(“x509-certificate”); if (bytes == null) { x509Certificate = null; } else { try { CertificateFactory certFactory = CertificateFactory.getInstance(“X.509”); Certificate cert = certFactory.generateCertificate(new ByteArrayInputStream(bytes)); x509Certificate = (X509Certificate) cert; } catch (CertificateException e) { x509Certificate […]

谷歌云消息安全

公司创建项目并接收发件人ID。 公司创建一个应用程序,烘焙其发件人ID并将应用程序放在商店中。 攻击者对应用程序进行反向工程,并提取发件人ID和用于接收GCM注册ID的服务器接口。 攻击者创建自己的应用程序,烘焙公司的发件人ID和服务器注册界面,将应用程序放入商店。 就GCM而言,攻击应用程序基本上冒充公司的真实应用程序:它注册接收来自公司发件人ID的邮件,然后将其GCM注册ID发送到公司的服务器,就像“真正的”应用程序一样。 现在,公司希望向其应用的所有实例广播一些信息。 也许这是一个提醒,而不是更新可用。 有没有办法区分“攻击应用程序”(注册就像真正的应用程序)与公司应用程序的“真实”版本?

如何在跨应用程序发送Intent数据时保护它们

我正在研究我的android应用程序的安全方面。 我想知道在将一个应用程序从一个应用程序发送到另一个应用程序时保护Intent数据和附加内容的方法,这样除了这两个应用程序之外没有其他应用程序可以窥探它。 其中一种蛮力方法是使用android的加密 – 解密来编码意图数据,有没有更好的方法来实现相同的? 提前致谢。

如何在模拟器中将CA证书导入Android 4.4.2?

我尝试了DER和PEM格式。 我尝试使用文件扩展名crt,cer,p12,pem但没有导入它们。 我进入设置>安全>从SD卡安装,它将我带到下载页面。 我列出了证书,但是当我点击它们时,没有任何反应。 更新添加:我最终回到4.3。 它工作得很好。

在应用计费安全性

我已经完成了在app billing v3中使用的应用程序的开发。 我的应用程序是一个考试帮助应用程序,其中包含一系列插入数据库的问题。 令我担心的是安全性超越预期,其他几乎没有。 我的应用程序查询库存中的已购买商品,因此存储购买不是问题。 所以第一个问题是有人可以反编译应用程序(我已经完成了),即使使用proguard,你也可以毫不费力地检索所有问题。 接下来是应用程序的公钥。 这可以很容易地从我的应用程序中获取,根据开发人员指南,这是我应该保持安全的。 但是我真的不知道如何实现任何forms的安全性。 或者甚至我应该走多远才能获得安全保障。 没有服务器,如果我将所有东西都保存在设备上,我认识到它不会是完美的(远非它),但我至少会喜欢黑客而不是被逗乐。 所以基本上问题是: 我应该使用什么types的安全性以及如何使用它? 只是指着我一步一步地浏览它的链接,这样我就能理解它会很棒。 非常感谢你! 澄清: 没有涉及服务器。 数据存储在应用程序中。 当查询库存时(通过queryinventoryasync方法),如果已购买库存,则返回库存,并且每次应用程序启动时都会运行。 在应用程序计费本身,我认为是可以的,我要求更多关于我自己的应用程序的应用程序公钥 – 我的意思是以某种方式使复制更难,但目前我已经把它分成15个字符串,我只是“添加”它们在运行时彼此相关,但这几乎没有任何好处,只需将它作为一个字符串。 我想以某种方式加密它只是不知道如何。