为什么Android在通过蓝牙OPP接收时严格限制可接受的文件类型?

col*_*nip 8 security android bluetooth obex

问候stackoverflow.

最近,我正在跟踪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 ... */
};
Run Code Online (Sandbox Code Playgroud)

这限制了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;
Run Code Online (Sandbox Code Playgroud)

是什么让我们关注这种情况下的MIME类型?据我所知,我们可能希望阻止可执行文件(即*.apk,*.so),因为这些文件可能会损害我们的设备.如果阻止某些特定类型是我们在此设置列表的原因,为什么我们会在此补丁之前使用白名单而不是黑名单?当我们通过其他非蓝牙协议(如HTTP)传输文件时是否存在类似的限制?

Eug*_*its 0

我对你的问题投了赞成票,同时将其标记为非建设性。这个问题很好,但问错了地方:您需要将您的投诉作为错误/建议提交到 Android 错误跟踪器中。

回答你的问题 - 这是一种通过限制用户使用枪和自己的脚来不让用户搬起石头砸自己的脚的趋势。也许定制 ROM 不受此限制。