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

时间:2011-06-29 09:23:17

标签: android security bluetooth obex

问候stackoverflow。

最近,我正在追踪Android框架中的蓝牙操作机制。我注意到this patch在通过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),因为这些文件可能会损害我们的设备。如果阻止某些特定类型是我们在此设置列表的原因,为什么我们会在此补丁之前使用白名单而不是黑名单?当我们通过其他非蓝牙协议(如HTTP)传输文件时是否存在类似的限制?

2 个答案:

答案 0 :(得分:2)

OBEX配置文件有望实现正在交换的内容格式的应用程序级互操作性。例如,如果推/拉名片,本地应用程序应该理解名片格式,以便能够在适当的位置显示名片(例如联系人位置),并且应该理解在其本地联系人应用程序中显示名片的格式。 OPP指定电话簿(vCards)日历,消息,便笺等的内容格式。 因此,服务器应该支持客户端尝试发送它的特定对象格式,以便能够对接收到的对象采取适当的操作。

对于更通用的文件传输/交换,可以使用FTP配置文件。

答案 1 :(得分:0)

我投了你的问题,并在同一时间将其标记为非建设性的。问题很好,但是在错误的地方被问到:你需要在android bug跟踪器中提交你的投诉作为错误/建议。

要回答你的问题 - 这是一种不让用户通过限制他对枪支和自己的脚进行射击的方式射击自己的倾向。也许自定义ROM不受此限制。