我正在尝试将 android 指纹实现到示例应用程序中。使用的密码不被认为是有效的 - 但我不知道为什么,因为基于 android 文档,它应该被支持。
密码建立在:
return Cipher.getInstance(KeyProperties.KEY_ALGORITHM_RSA + "/" +KeyProperties.BLOCK_MODE_ECB + "/" + KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1);
Run Code Online (Sandbox Code Playgroud)
官方文档中列出了此密码。
稍后使用的 keyGenerator 和 keyFactory 生成如下。
keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null); // Ensure the key store can be loaded before continuing.
keyGenerator = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore");
keyFactory = KeyFactory.getInstance("RSA");
createCipher(); // If this doesn't throw, the cipher we need is available.
Run Code Online (Sandbox Code Playgroud)
我还使用该密码初始化密钥生成器:
keyGenerator.initialize(new KeyGenParameterSpec.Builder(keyAlias,
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT) //
.setBlockModes(KeyProperties.BLOCK_MODE_ECB) //
.setUserAuthenticationRequired(true) //
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1) //
.build());
keyGenerator.generateKeyPair();
Run Code Online (Sandbox Code Playgroud)
我还将公钥添加到加密过程中,而公钥是这样生成的:
private PublicKey getPublicKey() throws GeneralSecurityException { …Run Code Online (Sandbox Code Playgroud) android android-keystore android-security android-fingerprint-api
我正在构建一个Android应用程序,我需要使用指纹api通过用户名和密码(在备份上)对用户进行身份验证.
这是我用最简单的术语理解我需要做的事情.
在用户输入用户名和密码并使用后端成功验证后登录时,我生成并将具有这些凭据的特定密钥库存储到androidkeystore.
在下次登录时,如果用户通过指纹成功进行身份验证,则从android密钥库中检索凭据(用户名和密码),并使用这些凭据在后端对用户进行身份验证.
我已经关注:http: //www.techotopia.com/index.php/An_Android_Fingerprint_Authentication_Tutorial
这给出了如何使用指纹API通过设备对用户进行身份验证的一个很好的示例.但是如何获取凭据,以便我可以使用后端对用户进行身份验证?
我想做什么的步骤,建议或详细示例?
谢谢.
android android-authenticator android-keystore android-security android-fingerprint-api
我想对隐藏API密钥和秘密密钥的最佳方法有您的看法。
我发现了两种方法:
我知道风险0不存在,但是最安全的解决方案是什么?
预先感谢
我最近在Google Play商店推出了一款游戏,到目前为止进展良好。我刚刚收到Google的一封电子邮件,内容为“您的一个或多个应用程序包含一个意图重定向漏洞,该漏洞会使用户数据处于危险之中”,并告诉我我需要在8月13日之前修复此问题。
我个人不收集或要求任何用户数据或信息。但是,我在游戏中使用了带有Facebook中介的Google Admob广告和Unity广告,这可能是导致此问题的原因。那么,我的问题是如何克服这个问题?他们还在电子邮件中说要更改清单文件。如果有人遇到类似问题并且知道解决方案,我们将不胜感激。
这是电子邮件:
“您的一个或多个应用程序包含一个意图重定向漏洞,该风险使用户数据处于危险之中。从2019年8月13日起,任何包含未修复的安全漏洞(超过Play控制台警报中列出的日期)的应用程序都将从Google Play中删除。
需要采取的行动
登录到您的Play控制台。选择警报以查看哪些应用程序包含安全漏洞,并查看有关如何解决此漏洞的指南。更新您受影响的应用程序以修复漏洞。提交受影响的应用程序的更新版本。重新提交后,您的应用将再次审核。此过程可能需要几个小时。如果该应用通过审核并成功发布,则无需采取进一步措施。如果该应用未通过审核,则新的应用版本将不会发布,您将通过电子邮件收到通知。”
我已经在Google Play商店中上传了我的应用程序,并且Google发出了“ Android安全性”警告。
在Application中,我们下载了Zip文件夹并将此Zip文件夹保存在内部存储器中,然后将该文件夹解压缩到设备的内部存储器中。
这是解压缩文件夹代码:
public static void doUnzip(String inputZipFile, String
destinationDirectory, ZipProgressListener zipProgressListener) throws
IOException, RuntimeException {
Log.e(TAG, "doUnzip:inputZipFile: " + inputZipFile);
Log.e(TAG, "doUnzip:destinationDirectory: " + destinationDirectory);
int BUFFER = 6 * 1024;
List zipFiles = new ArrayList();
File sourceZipFile = FileUtils.createValidFile(inputZipFile);
File unzipDestinationDirectory =
FileUtils.createValidFile(destinationDirectory);
unzipDestinationDirectory.mkdir();
String newPath = unzipDestinationDirectory.getAbsolutePath() +
File.separator +
FileUtils.getFileNameWithoutExtension(sourceZipFile.getName());
new File(newPath).mkdir();
ZipFile zipFile;
// Open Zip file for reading
zipFile = new ZipFile(sourceZipFile, ZipFile.OPEN_READ);
int entries = zipFile.size();
int total = 0;
Log.e(TAG, …Run Code Online (Sandbox Code Playgroud) 我向 Google Play 商店发布了一个应用程序。我刚刚收到一封来自 Google 的电子邮件,其中显示“您的应用程序容易受到意图重定向的攻击。
要解决此问题,请按照这篇 Google 帮助中心文章中的步骤操作。”
我查看了谷歌帮助中心文章,但找不到任何可以合并到我的应用程序中的内容。
虽然,我正在使用 Google Play Services SMS Retriever Auth,这可能是导致此问题的原因。我使用 SEND_PERMISSION 保护广播接收器,这可确保 Intent 来自 Play Services:
<receiver
android:name=".receiver.SmsBroadcastReceiver"
android:permission="com.google.android.gms.auth.api.phone.permission.SEND"
android:exported="true">
<intent-filter>
<action android:name="com.google.android.gms.auth.api.phone.SMS_RETRIEVE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?有人面临同样的问题吗?如果是这样,请您指导我,因为我必须在 12 月 20 日之前解决此问题,否则我的应用程序将被删除?
问题:广播接收器 (com.google.firebase.iid.FirebaseInstanceIdReceiver) 受权限保护,但应检查权限的保护级别。权限:com.google.android.c2dm.permission.SEND [android:exported=true]
描述:发现广播接收器与设备上的其他应用程序共享,因此设备上的任何其他应用程序都可以访问它。它受到分析的应用程序中未定义的权限的保护。因此,应在定义权限的地方检查权限的保护级别。如果设置为正常或危险,恶意应用程序可以请求并获取权限并与组件交互。如果设置为签名,则只有使用同一证书签名的应用程序才能获得权限。
我只能在合并清单中看到该接收器的权限级别和导出参数。对于这个问题我该怎么办?
最好的祝愿
我正在阅读这篇关于 Android 上任务劫持的文章:https ://blog.dixitaditya.com/android-task-hijacking/
我尝试了建议的修复,但仍然可以重现该问题。我还尝试在恶意应用程序的 Android Manifest 中将 Instagram、Gmail 应用程序的包名称指定为android:taskAffinity值,并在单击 Instagram、Gmail 后将我重定向到恶意应用程序。那么,为什么 Gmail 和 Instagram 容易受到此影响,还是我在某个地方弄错了?
Android 上是否有针对此问题的正确解决方案?
android android-activity back-stack android-task android-security
为了增强我的Android应用程序的安全性,我需要检测屏幕镜像。我已经实现了下面的源代码:
var display : DisplayManager = getSystemService(DISPLAY_SERVICE) as DisplayManager
var presentationdisplay= display.getDisplays(DISPLAY_CATEGORY_PRESENTATION).size
Toast.makeText(this, "disp size "+presentationdisplay, Toast.LENGTH_SHORT).show()
if(presentationdisplay>0) {
Toast.makeText(this, "your Mobile screen is shared by other app", Toast.LENGTH_SHORT).show()
}
Run Code Online (Sandbox Code Playgroud)
该代码能够检测 Screen Casting 以及 GoogleMeet、TeamViewer 的屏幕共享。但它没有检测到 MicrosoftTeams 和 Zoom 屏幕共享。我发现 MicrosoftTeams 和 Zoom 正在使用FLAG_PRIVATE,而FLAG_PRESENTATIONGoogleMeet、TeamViewer 仅使用FLAG_PRESENTATION. 我假设他们将其虚拟显示器保护为私有使用FLAG_PRIVATE。有什么方法可以检测屏幕镜像吗FLAG_PRIVATE?
android screenshot kotlin android-security android-displaymanager
我有一个包含 MYSDKActivity 的 SDK。在此活动布局中,我有 1 个编辑文本,用户可以在其中输入他的卡号。任何集成此 SDK 的 Android 客户端都可以在其应用程序类中使用ActivityLifecycleCallbacks并在此编辑文本上注册文本观察器,并且可以侦听用户卡号输入。
我想通过 Application 类阻止 SDK 编辑文本的使用。只有我的 SDK 可以访问此编辑文本并执行某些操作。我想阻止在我的 SDK 之外使用。
public class MyDemoApp extends Application implements Application.ActivityLifecycleCallbacks {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(this);
}
@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {}
@Override
public void onActivityStarted(@NonNull Activity activity) {}
@Override
public void onActivityResumed(@NonNull Activity activity) {
if (activity instanceof MYSDKActivity) {
final TextInputLayout textInputLayout = activity.findViewById(R.id.my_sdk_edit_text);
if (textInputLayout != null) {
ViewGroup textInputLayoutViewGroup = …Run Code Online (Sandbox Code Playgroud) security android android-edittext android-security android-textinputedittext
android-security ×10
android ×7
security ×2
android-ndk ×1
android-task ×1
back-stack ×1
gradle ×1
kotlin ×1
screenshot ×1