应用内计费安全和远程方法调用
2022-09-03 16:16:23
我已经在应用计费中实现了应用计费,现在我想进一步保护它。阅读开发人员材料时,它指出:
除了运行模糊处理程序之外,我们还建议您使用以下技术对应用内结算代码进行模糊处理。
将方法内联到其他方法中。
动态构造字符串,而不是将它们定义为常量。
使用 Java 反射来调用方法。
http://developer.android.com/guide/market/billing/billing_best_practices.html
混淆 - 好吧,我可以做到= proguard
将方法内联到其他方法中 - 这是不是说一旦我的代码完成,就尽可能地摆脱OO,并在一种方法中将所有代码放在尽可能多的行中(对于我的应用程序的计费部分)?这是否包括内联类?在android示例中,他们有一个常量类,我会内联所有这些吗?
动态构造字符串 - 是的,所以移动所有类常量变量 - 精细的proguard应该涵盖这一点
使用Java Reflection - 这是我的主要问题。我应该调用我的所有方法而不是调用它们吗?
为了节省一些精力,我可以这样做:
private static Object invokeMethod(String name, Class<?>[] params, Object[] args){
try {
return MySpecificClass.class.getMethod(name, params).invoke(null, args);
} catch (IllegalArgumentException e) {
// Should never happen in my code, ignore and cancel in app charge
} catch (SecurityException e) {
// Should never happen in my code, ignore and cancel in app charge
} catch (IllegalAccessException e) {
// Should never happen in my code, ignore and cancel in app charge
} catch (InvocationTargetException e) {
// Should never happen in my code, ignore and cancel in app charge
} catch (NoSuchMethodException e) {
// Should never happen in my code, ignore and cancel in app charge
}
return null;
}
然后我可以做这样的事情:
private static boolean someMethod() {
return true; // just an example
}
params = new Class<?>[0];
if ((Boolean) invokeMethod("someMethod", params, null)) {
// Do something
}
这是良好的安全性,还是只是代码膨胀,使我的应用程序无法因真正的用户问题而受到威胁?
谢谢。