`
whotodo
  • 浏览: 169069 次
文章分类
社区版块
存档分类
最新评论

禁止其他应用访问自己的组件

 
阅读更多

如果想要禁止其他程序调用自己的组件,只需要在AndroidManifest.xml文件中相应组件加入

android:exported="false"

即可。

当其他程序调用时将爆出java.lang.SecurityException: Permission Denial: ****not exported from uid ****


当然,通过查看源码可以知道,任意检查权限的操作都会屏蔽掉系统服务或root用户以至于拥有这些权限的应用是可以任意调用的,所以权限高才是王道啊。

举个启动activity的权限检查的例子:

在ActivityManagerService中的checkComponentPermission

 /**
     * This can be called with or without the global lock held.
     */
    int checkComponentPermission(String permission, int pid, int uid,
            int owningUid, boolean exported) {
        // We might be performing an operation on behalf of an indirect binder
        // invocation, e.g. via {@link #openContentUri}.  Check and adjust the
        // client identity accordingly before proceeding.
        Identity tlsIdentity = sCallerIdentity.get();
        if (tlsIdentity != null) {
            Slog.d(TAG, "checkComponentPermission() adjusting {pid,uid} to {"
                    + tlsIdentity.pid + "," + tlsIdentity.uid + "}");
            uid = tlsIdentity.uid;
            pid = tlsIdentity.pid;
        }

        // Root, system server and our own process get to do everything.
        if (uid == 0 || uid == Process.SYSTEM_UID || pid == MY_PID) {
            return PackageManager.PERMISSION_GRANTED;
        }
        // If there is a uid that owns whatever is being accessed, it has
        // blanket access to it regardless of the permissions it requires.
        if (owningUid >= 0 && uid == owningUid) {
            return PackageManager.PERMISSION_GRANTED;
        }
        // If the target is not exported, then nobody else can get to it.
        if (!exported) {
            Slog.w(TAG, "Permission denied: checkComponentPermission() owningUid=" + owningUid);
            return PackageManager.PERMISSION_DENIED;
        }
        if (permission == null) {
            return PackageManager.PERMISSION_GRANTED;
        }
        try {
            return AppGlobals.getPackageManager()
                    .checkUidPermission(permission, uid);
        } catch (RemoteException e) {
            // Should never happen, but if it does... deny!
            Slog.e(TAG, "PackageManager is dead?!?", e);
        }
        return PackageManager.PERMISSION_DENIED;
    }

明白了把
分享到:
评论

相关推荐

    Android应用源码安卓源码包wifi蓝牙串口&Socket通讯窗口抖动Widget小组件等20个合集.zip

    Android应用源码安卓源码包wifi蓝牙串口&Socket通讯窗口抖动Widget小组件等20个合集: android Widget小组件开发.zip Android 开启指定名称和密码的 Wifi热点 demo.zip Android中禁止某软件的安装.zip Android小部件...

    Web应用安全:IIS禁止目录列出配置.docx

    目录遍历(路径遍历)是由于Web服务器或者Web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以是Web根目录以外的...

    IIS6.0 IIS,互联网信息服务

    访问 其它人可以通过http://计算机名/shop/ 或 http://本机IP地址/shop/ 访问 11、如果您有域名,把域名解析到本地IP地址,即可通过http://域名/shop/ [编辑本段]IIS之Web服务器建立  第一篇 IIS之Web服务器 一、...

    超级有影响力霸气的Java面试题大全文档

    SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。  对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器...

    鼎昌外存设备访问监控平台 v1.2.zip

    防止外存设备任意访问他人或其他部门机器。 5、限制时效:根据需要可设置设备的使用时效,如:起止日期或永久使用。 方便外来存储设备在企业内部临时短暂使用。 6、授权信息:已授权的设备信息记录完整,可导出...

    delphi 开发经验技巧宝典源码

    1.5 其他相关应用技巧 11 0017 安装合适的Delphi版本 11 0018 熟练掌握Delphi中的菜单项 12 0019 构成Delphi项目的主要文件 12 0020 如何在程序中调用帮助文件 12 第2章 语言基础 17 2.1 基础语言 18 ...

    delphi 开发经验技巧宝典源码06

    1.5 其他相关应用技巧 11 0017 安装合适的Delphi版本 11 0018 熟练掌握Delphi中的菜单项 12 0019 构成Delphi项目的主要文件 12 0020 如何在程序中调用帮助文件 12 第2章 语言基础 17 2.1 基础语言 18 ...

    数据库加密软件SDS v2.0 测试版

    SDS可禁止SQL组件远程导出数据。 SDS与数据库应用程序及数据库大小无关,后台实时监控数据的写入和读取,不会影响应用程序的正常使用。 SDS的特点如下: 1. 单机安装,维护简单。 2. 后台运行,实时监控数据库...

    14-企业网络设备安全策略.doc

    网络设备应遵循最小安装的原则,仅安装需要组件和应用程序; 网络设备应关闭不需要得系统服务、默认共享和高危端口; 网络设备应通过设定终端接入方式或网络地址范围对通过网络进行管理终端进行限制 ; 网络设备应...

    计算机设置

    依次选择“管理模板”→“网络”→“网络连接”右侧栏内找到“禁止访问LAN连接的属性”然后在描述上面点击“属性”。 (4).在“禁止访问LAN连接的属性”设置栏内勾选“已启用”再按“确定”。 (5).然后在找到“为...

    C#.net_经典编程例子400个

    142 3.6 Process组件 143 实例102 使用Process组件访问本地进程 143 3.7 Timer组件 145 实例103 使用Timer组件制作计时器 145 实例104 使用Timer组件显示当前系统时间 150 实例105 ...

    精易官方免费模块v3.60版

    3.完善 “网页_禁止允许gif图片”“网页_禁止允许显示图片” “网页_禁止允许背景声音”“网页_禁止允许点击声音” “网页_禁止允许播放网页视频”“网页_禁止允许一键操作” 的备注信息 1.增加网页_禁止允许一键...

    数据库系统安全配置管理办法.txt

    禁止未授权的数据库系统远程管理访问,对于已经批准的远程管理访问,应采取安全措施增强远程管理访问安全。 第七章 数据库对象安全 第二十条 数据文件安全,对数据文件访问权限进行控制,如:禁止除专用账户外的...

    flex3的cookbook书籍完整版dpf(包含目录)

    访问设置自己渲染器的组件 7.4.节.创建一个简单的组件作为渲染器和编辑器 7.5节.创建一个ItemEditor,它可以处理含有复杂数据类型的Data 7.6.节.使用项渲染器把SWF对象作为一个菜单项显示 7.7.节.用一个复选框渲染器...

    {安全生产管理}网络安全07防火墙.pdf

    风险评估 入侵检测 审计分析 安全的通信协议 VPN 防火墙 存储备份 防火墙基本概念 什么是防火墙 防火墙是位于两个(或多个)网络间,实施 网间访问控制的组件集合,通过建立一整 套规则和策略来监测、限制、更改跨越防...

Global site tag (gtag.js) - Google Analytics