5.2.1 示例代码 5.2.1.1 如何使用 Android OS 的系统权限 Android 操作系统有一个称为“权限”的安全机制,可以保护其用户的资产(如联系人和 GPS 功能)免受恶意软件的侵害。 当应用请求访问受 Android OS 保护的信息或功能时,应用需要显式声明权限才能访问它们。 安装应用,它申请需要用户同意的权限时,会出现以下确认界面 [23]。 [23] 在 Android
4.6.1 示例代码 如上所述,文件原则上应该是私有的。 但是,由于某些原因,有时文件应该由其他应用直接读写。 按照安全角度分类和比较中文件类型如表 4.6-1 所示。 它们根据文件存储位置或其他应用的访问权限分为四类。 下面展示了每个文件类别的示例代码,并在其中添加了每个的解释。 表 4.6-1 按照安全角度的文件类别和比较 文件类别 其它应用的访问权限 储存位置 概述 私有文件 NA 应用目录
4.5.1 示例代码 4.5.1.1 创建/操作数据库 在 Android 应用中处理数据库时,可以通过使用SQLiteOpenHelper [10] 来实现数据库文件的适当安排和访问权限设置(拒绝其他应用访问的设置)。 下面是一个简单的应用示例,它在启动时创建数据库,并通过 UI 执行搜索/添加/更改/删除数据。 示例代码完成了 SQL 注入的防范,来避免来自外部的输入执行不正确的 SQL。 [
4.4.1 示例代码 使用服务的风险和对策取决于服务的使用方式。 您可以通过下面展示的图表找出您应该创建的服务类型。 由于安全编码的最佳实践,根据服务的创建方式而有所不同,因此我们也将解释服务的实现。 表 4.4-1 服务类型的定义 类型 定义 私有 不能由其他应用加载,所以是最安全的服务 公共 应该由很多未指定的应用使用的服务 伙伴 只能由可信的伙伴公司开发的应用使用的服务 内部 只能由其他内部
4.3.1 示例代码 使用内容供应器的风险和对策取决于内容供应器的使用方式。 在本节中,我们根据内容供应器的使用方式,对 5 种类型的内容供应器进行了分类。 您可以通过下面显示的图表,找出您应该创建哪种类型的内容供应器。 表 4.3-1 内容供应器类型定义 类型 定义 私有 不能由其他应用使用的内容供应器,所以是最安全的 公共 应该由未指定的大量应用使用的内容供应器 伙伴 只能由可信的伙伴公司开发
4.2.1 示例代码 接收广播需要创建广播接收器。 使用广播接收器的风险和对策,根据收到的广播的类型而有所不同。 你可以在以下判断流程中找到你的广播接收器。 接收应用无法检查发送广播的应用的包名称,它是链接伙伴所需的。 因此,无法创建用于伙伴的广播接收器。 表 4.2:广播接收器的类型定义: 类型 定义 私有 只能接收来自相同应用的广播的广播接收器,所以是最安全的 公共 可以接收来自未指定的大量应
4.1.1 示例代码 使用活动的风险和对策取决于活动的使用方式。 在本节中,我们根据活动的使用情况,对 4 种活动进行了分类。 你可以通过下面的图表来找出,你应该创建哪种类型的活动。 由于安全编程最佳实践根据活动的使用方式而有所不同,因此我们也将解释活动的实现。 表 4-1 活动类型的定义 类型 定义 私有 不能由其他应用加载,所以是最安全的活动 公共 应该由很多未指定的应用使用的活动 伙伴 只能
11.1 Java 源文件示例 下面的例子,展示了如何合理布局一个包含单一公共类的Java源程序。接口的布局与其相似。更多信息参见 "类和接口声明" and "文档注释" /* * @(#)Blah.java 1.82 99/03/18 * * Copyright (c) 1994-1999 Sun Microsystems, Inc. * 901 S
Go 代码检查 统计代码行数 推荐我开发的开源软件--artHummer,目前只是简单的统计代码,后续可能开发更加复杂的功能。 go report 如果您的代码是放在github上面的,可以登录go report 进行代码扫描。 gofmt 整理代码 gofmt -l -w -s *.go gofmt -r '(a)->a' -l -w *.go go tool vet 这个
本来不应该把这个章节放在那面前面的,因为还没进行学习之前,直接看这个章节,会感觉有很多莫名其妙的东西。 但是把这个章节放在前面的用意,只是让大家预览一下,有个印象,而且在以后的学习中,也方便大家查阅。 目录
引用代码 点击“代码分享”按钮,弹出代码引用信息框,复制代码到其他网页就可以引用该代码了。
1.【强制】 大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则: 1) 左大括号前不换行。 2) 左大括号后换行。 3) 右大括号前换行。 4) 右大括号后还有else等代码则不换行;表示终止的右大括号后必须换行。 2.【强制】 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。详见 第 5 条下方正例示。 反例: if (空格a ==
1.【强制】 大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行 ; 如果是非空代码块则: 左大括号前不换行; 左大括号后换行; 右大括号前换行; 右大括号后还有 else 等代码则不换行; 表示终止右大括号后必须换行。 2.【强制】 左括号和后一个字符之间不出现空格; 同样,右括号和前一个字符之间也不出现空格。详见第 5 条下方正例提示。 3.【强制】 if / for /
1. 安装和使用 npm install commitizen -g # 在项目中配置 commitizen init cz-conventional-changelog --save-dev --save-exact npm install -D husky @commitlint/config-conventional @commitlint/cli 在package.json中添加配置 {
程序员接触时间最长的就是代码编辑器。 代码编辑器主要分两种:IDE(集成开发环境)和轻量编辑器。很多人喜欢这两种各选一个。 IDE IDE(集成开发环境)是指用于管理整个项目的,具有强大功能的编辑器。顾名思义,它不仅仅是一个编辑器,而且还是个完整的“开发环境”。 IDE 加载项目(通常包含很多文件),并且允许在不同文件之间导航(navigation)。IDE 还提供基于整个项目(不仅仅是打开的文件