如果可能,请为Manifest中的PreferenceActivity设置exported = false。这将阻止外国应用程序将Intent发送到此类。
如果必须将易受攻击的PreferenceActivity导出到外国应用程序,则确定该类易受攻击的原因并采取相应的操作。有两种可能性:
isValidFragment的实现不正确:
检查易受攻击的类是否包含或继承isValidFragment的实现,该实现在所有代码路径上返回true。如果是,则更新类以检查允许的Fragment类列表。例如:如果PreferenceActivity应该允许MyFragment类而不允许其他片段,那么执行如下检查:
public boolean isValidFragment(String fragmentName) {
return MyFragment.class.getName().equals(fragmentName);
}
targetSdkVersion小于19且未实现isValidFragment:
如果应用程序当前将清单中的targetSdkVersion设置为小于19的值,并且易受攻击的类不包含isValidFragment的任何实现,则该漏洞将继承自PreferenceActivity。
为了解决问题,开发人员应该将targetSdkVersion更新为19或更高版本。或者,如果无法更新targetSdkVersion,那么开发人员应该按照1)中的描述实现isValidFragment,以检查允许的片段类。