あいさつstackoverflow。
最近、AndroidフレームワークのBluetooth操作メカニズムを追跡しています。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などの他のBluetooth以外のプロトコルを介してファイルを送信する場合、同様の制限がありますか?