为什么在 Flutter/Android 客户端上使用 FCM 服务器密钥是不好的做法?
Why is it bad practice to use an FCM Server Key on a Flutter/Android client?
我想使用我的 Firebase 云消息传递 (FCM) 服务器密钥从我的 Flutter 应用程序发送消息。但有人告诉我这是不好的做法,应该在服务器端完成。但由于 APK 中的代码对用户不可见,为什么这是一个安全问题?
void send() async {
await http.post(
'https://fcm.googleapis.com/fcm/send',
headers: <String, String>{
'Content-Type': 'application/json',
'Authorization': 'key=$serverToken',
},
body: jsonEncode(
<String, dynamic>{
'notification': <String, dynamic>{
'body': 'This is a body',
'title': 'Banana'
},
'priority': 'high',
'data': <String, dynamic>{
'audioid': '139',
'title': 'done all over time',
'name': 'Greengirl'
},
'to': '/topics/test_fcm_topic',
},
),
);
}
一般而言,不仅是关于您仅针对 FCM 密钥的具体问题,您的 APK 中的代码通常对普通用户不可见。但是你的 APK 代码绝对不安全,无论谁努力找到它并对其进行逆向工程。
几乎没有什么是不可能逆向工程的。我使用 'almost' 因为我无法确认并说 'everything'.
FCM 是免费的,但不是钱的问题。想象一下,有人拥有您的令牌,可以代表您向您的其他任何用户发送消息?
电子邮件通常可以免费使用,但是,您介意与其他人共享吗?
我想使用我的 Firebase 云消息传递 (FCM) 服务器密钥从我的 Flutter 应用程序发送消息。但有人告诉我这是不好的做法,应该在服务器端完成。但由于 APK 中的代码对用户不可见,为什么这是一个安全问题?
void send() async {
await http.post(
'https://fcm.googleapis.com/fcm/send',
headers: <String, String>{
'Content-Type': 'application/json',
'Authorization': 'key=$serverToken',
},
body: jsonEncode(
<String, dynamic>{
'notification': <String, dynamic>{
'body': 'This is a body',
'title': 'Banana'
},
'priority': 'high',
'data': <String, dynamic>{
'audioid': '139',
'title': 'done all over time',
'name': 'Greengirl'
},
'to': '/topics/test_fcm_topic',
},
),
);
}
一般而言,不仅是关于您仅针对 FCM 密钥的具体问题,您的 APK 中的代码通常对普通用户不可见。但是你的 APK 代码绝对不安全,无论谁努力找到它并对其进行逆向工程。
几乎没有什么是不可能逆向工程的。我使用 'almost' 因为我无法确认并说 'everything'.
FCM 是免费的,但不是钱的问题。想象一下,有人拥有您的令牌,可以代表您向您的其他任何用户发送消息?
电子邮件通常可以免费使用,但是,您介意与其他人共享吗?