【问题标题】:making NFC Activity private without android:exported=false在没有 android:exported=false 的情况下将 NFC Activity 设为私有
【发布时间】:2012-10-03 23:17:56
【问题描述】:

我有一个 NFC 活动,它指定了一个意图过滤器和数据。这有点像

        <intent-filter>
            <action android:name="android.nfc.action..." />
            <category android:name="android.intent.category.DEFAULT" />

            <data
                android:host="..."
                android:path="..." />
        </intent-filter>

现在这里担心的是,由于我没有包含 android:exported="false"。它使该活动容易受到来自外部应用程序的恶意攻击,因为该活动现在是公开的。这里的问题是,如果我将导出的属性设置为 false,我将无法获取从外部意图调用的活动(应该通过 onNewIntent() 触发活动)

有没有办法让活动“安全”,同时不影响其一般触发机制,即通过外部意图?

【问题讨论】:

    标签: android android-activity nfc intentfilter


    【解决方案1】:

    如果您需要收到有关标签的通知,则需要意图过滤器。标签调度器使用它来查找感兴趣的活动,以便在扫描标签时考虑。如您所见,如果您将活动设为私有,则无法通知它。您担心什么“恶意攻击”?您的活动与您编写的代码一样安全:如果您只处理 NFC 意图,您将是“安全的”(当然,除非 NFC 有效负载触发设备擦除代码或其他东西......)

    【讨论】:

    • 所以更清楚一点,如果我想要一个外部事件(或意图)来触发我的活动(比如某种 NFC 场),我不能将活动设为私有。对吗?跨度>
    • 对。最好的办法是要求一些自定义权限,但这不适用于 NFC,因为您无法更改操作系统。
    • “你的活动是安全的,就像你编码的那样:如果你只处理 NFC 意图,就不要……”这是什么意思?
    猜你喜欢
    • 2018-12-21
    • 2012-01-22
    • 2021-10-27
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    相关资源
    最近更新 更多