如何使用 Ionic 和 Cordova 修复 Android 应用程序中的漏洞问题
How to Fix Vulnerabilities Issue in Android App with Ionic and Cordova
我用 MobSF 分析了一个 apk,发现了很多漏洞问题,但我不知道如何修复它。
即
android.permission.REQUEST_INSTALL_PACKAGES dangerous
android.permission.WRITE_EXTERNAL_STORAGE dangerous
android.permission.CALL_PHONE dangerous
android.permission.WAKE_LOCK dangerous
这些不是漏洞。它们被称为 "dangerous" 权限,因为它们允许您执行可能危及用户隐私的事情。危险权限要求您在运行时请求权限,而不仅仅是在清单中。
我会删除您实际不使用的所有内容。 REQUEST_INSTALL_PACKAGES 特别令人担忧,很少需要它。但如果你真的需要这些功能,那就没问题了。
我在构建中使用挂钩解决了我的问题。此脚本删除特定权限:
var permissionsToRemove = [ "WRITE_EXTERNAL_STORAGE", "READ_EXTERNAL_STORAGE", "WAKE_LOCK", "REQUEST_INSTALL_PACKAGES" ];
module.exports = function(context) {
const platformRoot = path.join(context.opts.projectRoot, 'platforms/android/app/src/main');
const manifestFile = path.join(platformRoot, 'AndroidManifest.xml');
if (fs.existsSync(manifestFile)) {
fs.readFile(manifestFile, 'utf8', function (err, data) {
if (err) {
throw new Error('Unable to find AndroidManifest.xml: ' + err);
}
let result = data;
for (var i=0; i<permissionsToRemove.length; i++) {
result = result.replace( "<uses-permission android:name=\"android.permission." + permissionsToRemove[i] + "\" />", "" );
}
});
}
};
我用 MobSF 分析了一个 apk,发现了很多漏洞问题,但我不知道如何修复它。
即
android.permission.REQUEST_INSTALL_PACKAGES dangerous
android.permission.WRITE_EXTERNAL_STORAGE dangerous
android.permission.CALL_PHONE dangerous
android.permission.WAKE_LOCK dangerous
这些不是漏洞。它们被称为 "dangerous" 权限,因为它们允许您执行可能危及用户隐私的事情。危险权限要求您在运行时请求权限,而不仅仅是在清单中。
我会删除您实际不使用的所有内容。 REQUEST_INSTALL_PACKAGES 特别令人担忧,很少需要它。但如果你真的需要这些功能,那就没问题了。
我在构建中使用挂钩解决了我的问题。此脚本删除特定权限:
var permissionsToRemove = [ "WRITE_EXTERNAL_STORAGE", "READ_EXTERNAL_STORAGE", "WAKE_LOCK", "REQUEST_INSTALL_PACKAGES" ];
module.exports = function(context) {
const platformRoot = path.join(context.opts.projectRoot, 'platforms/android/app/src/main');
const manifestFile = path.join(platformRoot, 'AndroidManifest.xml');
if (fs.existsSync(manifestFile)) {
fs.readFile(manifestFile, 'utf8', function (err, data) {
if (err) {
throw new Error('Unable to find AndroidManifest.xml: ' + err);
}
let result = data;
for (var i=0; i<permissionsToRemove.length; i++) {
result = result.replace( "<uses-permission android:name=\"android.permission." + permissionsToRemove[i] + "\" />", "" );
}
});
}
};