привет стека переполнения.
В последнее время я отслеживаю механизм работы Bluetooth в платформе Android. Я заметил, что есть некоторые ограничения типа файлов, которые делает этот патч при получении файлов через OPP.
в пакете com.android.bluetooth.opp
, в Constants.java есть фиксированный белый список
/**
* The MIME type(s) of we could accept from other device.
* This is in essence a "white list" of acceptable types.
* Today, restricted to images, audio, video and certain text types.
*/
public static final String[] ACCEPTABLE_SHARE_INBOUND_TYPES = new String[] {
/* ... some types such as images and music ... */
};
, который ограничивает допустимые типы файлов в BluetoothOppObexServerSession.java
// Reject policy: anything outside the "white list" plus unspecified
// MIME Types.
if (!pre_reject
&& (mimeType == null || (!Constants.mimeTypeMatches(mimeType,
Constants.ACCEPTABLE_SHARE_INBOUND_TYPES)))) {
if (D) Log.w(TAG, "mimeType is null or in unacceptable list, reject the transfer");
pre_reject = true;
obexResponse = ResponseCodes.OBEX_HTTP_UNSUPPORTED_TYPE;
Что заставляет нас беспокоиться о типе MIME в этой ситуации? Насколько мне известно, мы можем блокировать исполняемые файлы (например, * .apk, * .so), поскольку эти файлы могут повредить наше устройство. Если блокировка некоторых определенных типов является причиной, по которой мы устанавливаем список здесь, зачем использовать белый список вместо черного списка непосредственно перед этим патчем? Существуют ли аналогичные ограничения при передаче файлов по другому протоколу, кроме Bluetooth, например HTTP?