gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:52 31 4
gpt4 key购买 nike

问候 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),因为这些文件可能会损害我们的设备。如果阻止某些特定类型是我们在这里设置列表的原因,为什么我们会在这个补丁之前使用白名单而不是黑名单?当我们通过其他非蓝牙协议(protocol)(如 HTTP)传输文件时是否有类似的限制?

最佳答案

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

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

关于android - 为什么Android在通过蓝牙OPP接收时对可接受的文件类型限制如此严格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6518352/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com