鉴于Android中的安全模型,我正在尝试使用广播接收器的自定义权限.
我做了什么:
我已经为接收器声明了自定义权限,从而限制了它可以接收的广播.清单中的一些代码:
<permission android:name="abc"/>
<receiver android:name=".UpdateUserReceiver"
android:permission="abc"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.ACTION_UPDATE_USERNAME"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
现在我希望接收器UpdateUserReceiver只接收来自使用权限'abc'的组件的广播.
广播发送代码:
// Update username. Invoke broadcast.
Intent updateUserBroadcast = new Intent();
updateUserBroadcast.putExtra("username", userName);
updateUserBroadcast.setAction("android.intent.action.ACTION_UPDATE_USERNAME");
sendBroadcast(updateUserBroadcast);
Run Code Online (Sandbox Code Playgroud)
发送广播的活动:
<activity android:name=".UpdateUserNameActivity">
<intent-filter>
<action android:name="com.intent.action.UPDATE_USERNAME"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
问题1:如图所示,活动无处使用接收方声明的权限,以便它可以从活动接收广播.但仍然调用接收器,我怀疑它是由于使用隐式意图虽然我不确定.有任何想法吗?
问题2:在应用级别声明的权限标记和接收者内部的android:permission标记之间有什么区别?我理解第二个的使用,它在任何人都可以期待接收者接收广播之前强制执行许可,但是为什么是第一个需要的.是否需要此方案,或者是否可以将其删除.无论哪种方式,我都检查过接收器接收广播.
android broadcastreceiver android-permissions android-security
有没有一种方法,我可以要求用户使用设置的模式(密码,指纹等)在手机上执行解锁操作,以访问我的应用程序的某些功能?
例如,在iOS中,我基于QR码生成OTP。在向用户显示生成的OTP令牌之前,我可以要求用户提供解锁密码。我要为我的android应用程序设置相同的功能。这样可以防止滥用该应用程序。
我刚刚收到一封来自 Google Play 的电子邮件,内容为:“我们检测到您在这封电子邮件末尾列出的应用程序正在调用应用程序内计费服务,而没有为该意图设置目标包。这可以使恶意程序包绕过 Play 商店计费系统并访问尚未购买的项目。”
这个游戏是使用Unity3D开发的。我对原生 Android 没有任何原生知识。我应该在 Unity3D 中做什么才能解决这个问题?谢谢
Android Keystore (with KeyPairGeneratorSpecetc) 在 API 级别 18 中引入。 但是,该方法KeyPairGeneratorSpec.Builder.setKeySize()仅在 API 级别 19 中引入。
在支持 API 级别 18 (Android 4.3) 的同时,是否可以设置密钥大小?
android android-keystore android-4.3-jelly-bean android-security
我想让用户在启用后重定向到开发人员选项->模拟位置。我的要求是,当跟踪到任何虚假的 GPS 位置时,我需要重定向到开发人员选项-> 选择模拟位置应用程序以禁用。
if (AppUtils.isMockLocationEnabled(mLastLocation, FeedbackActivity.this)) {
final Dialog dialog = new Dialog(FeedbackActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom_alert_response_accepted1);
Button ok = (Button) dialog.findViewById(R.id.ok_button);
TextView textView = (TextView) dialog.findViewById(R.id.response);
textView.setText("Turn off Fake Gps");
Button cancel = (Button) dialog.findViewById(R.id.Cancel_button);
dialog.setCancelable(false);
dialog.show();
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
//I tried this but this is not working..
Settings.Secure.getString(getContentResolver(), "mock_location");
}
});
}
Run Code Online (Sandbox Code Playgroud)
我尝试了这个“mock_location”,但它不会选择模拟位置应用程序。没有任何表现..
//下面这只是仅打开开发者选项。如何重定向到开发者设置中的模拟位置以关闭?
startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
Run Code Online (Sandbox Code Playgroud) 我在 Google Play 商店中上传了一个使用 Adobe Creative SDK 的 Android 应用程序。我最近从 Play 控制台收到一条警报,该应用程序包含不安全的解压缩模式,可能会导致 com.adobe.android.common.util.ba 位置处的路径遍历漏洞。我认为这是 adobe Creative sdk 的错误,需要他们来解决。任何人都可以知道如何解决这个问题吗?
当我更新我的应用程序时,我收到了一封来自谷歌的邮件,显示
您好 Google Play 开发者,
我们审核了您的应用,发现您的应用使用的软件存在用户安全漏洞。具有这些漏洞的应用程序可能会暴露用户信息或损坏用户的设备,并可能被视为违反我们的恶意行为政策。
漏洞 -您的应用程序容易受到意图重定向的影响。
但我没有做任何意图提取或重定向。稍微搜索后,我应用了一些解决方案,
android:exported="false"
但它们都不起作用。
现在,我认为某些第三方插件是造成该漏洞的原因。如何在我的代码中找到该漏洞?
下面是我的 build.gradle 文件
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 21
targetSdkVersion 29
renderscriptTargetApi 18
renderscriptSupportModeEnabled true
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resConfigs "en"
}
buildTypes {
debug {
firebaseCrashlytics {
mappingFileUploadEnabled false
}
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
externalNativeBuild {
ndkBuild { …Run Code Online (Sandbox Code Playgroud) 我的 Android 应用程序包含一组可执行文件,这些可执行文件在首次运行时提取到应用程序目录 (/data/data/%package%/)。如果针对 Android 28 ( targetSdkVersion),它工作得很好。自 2020 年 11 月 2 日起,Google Play 不允许使用它,所有应用程序都必须定位到 29。因此它因权限异常而停止工作。
现在可执行文件应该放在哪个目录中?
附言。一些类似的应用程序也有同样的问题。
我从谷歌收到这封邮件,它说“应用程序使用包含安全漏洞的软件”,但没有任何地方告诉我哪个包或库导致了该漏洞。
\n在 Google Play 控制台上,我也没有在任何地方看到此错误的详细信息。
\n\n\n您好 Google Play 开发者,
\n我们审核了 Dry Clean & Laundry - DhobiLite,程序包名称为\ncom.dhobilite,发现您的应用使用的软件包含\n用户安全漏洞。具有这些漏洞的应用\n可能会泄露用户信息或损坏用户\xe2\x80\x99s 设备,并\n可能被视为违反我们的恶意行为政策。
\n下面是在您最近提交的问题中\n检测到的问题和相应 APK 版本的列表。请尽快迁移您的应用以\n使用更新后的软件,并增加\n升级后APK的版本号。
\n\n