Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
取酒独倾
unidocs-zh
提交
8585699a
U
unidocs-zh
项目概览
取酒独倾
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8585699a
编写于
3月 04, 2022
作者:
D
DCloud_LXH
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into vuepress
上级
45fb2257
671848a6
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
707 addition
and
578 deletion
+707
-578
docs/app-sec-api.md
docs/app-sec-api.md
+127
-0
docs/tutorial/migration-to-vue3.md
docs/tutorial/migration-to-vue3.md
+2
-0
docs/uniCloud/_sidebar.md
docs/uniCloud/_sidebar.md
+1
-1
docs/uniCloud/uni-starter.md
docs/uniCloud/uni-starter.md
+573
-573
docs/unipush.md
docs/unipush.md
+4
-4
未找到文件。
docs/app-sec-api.md
0 → 100644
浏览文件 @
8585699a
为了提升App的安全性,推荐对安装包进行加固处理(如腾讯、360等加固平台),对安全性有更高要求的App建议使用商用加固解决方案。同时也可以使用以下安全类API在应用运行期进行检测,加强应用的安全性。
### getSignature
[
plus.navigator.getSignature
](
https://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.getSignature
)
用于获取应用签名标识,可以判断App是否被重新签名。
签名证书是对App开发者身份的唯一标识,如果程序未对签名证书进行校验,可能被反编译后进行二次打包使用其它签名证书重新签名。如重新签名的App可以正常启动,则可能导致App被仿冒盗版,影响其合法收入,甚至可能被添加钓鱼代码、病毒代码、恶意代码,导致用户敏感信息泄露或者恶意攻击。
uni-app项目可以在App.vue的应用生命周期
[
onLaunch
](
https://uniapp.dcloud.io/collocation/frame/lifecycle?id=%e5%ba%94%e7%94%a8%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f
)
中进行校验,示例如下:
```
js
onLaunch
:
function
(
inf
)
{
console
.
log
(
'
App Launch
'
);
// #ifdef APP-PLUS
// 签名证书检验
var
platform
=
uni
.
getSystemInfoSync
.
platform
;
var
sign
=
plus
.
navigator
.
getSignature
();
if
(
'
android
'
==
platform
){
//Android平台
var
sha1
=
'
baad093a82829fb432a7b28cb4ccf0e9f37dae58
'
;
//修改为自己应用签名证书SHA-1值,是全小写并且中间不包含“:”符号
if
(
sha1
!=
sign
){
//证书不对时退出应用
plus
.
runtime
.
quit
();
}
}
else
{
//iOS平台
var
md5
=
'
a2e629f0ea915b4ed11e296a059c9a12
'
;
//修改为自己应用Apple Bunld ID(AppID)的md5值
if
(
md5
!=
sign
){
//不进入应用或循环弹出提示框
console
.
log
(
'
应用被破坏,无法正常运行!
'
);
uni
.
showModal
({
title
:
'
错误
'
,
content
:
'
应用被破坏,无法正常运行!
'
,
});
}
}
// #endif
}
```
> 提示:为了防止js检验代码被反编译篡改,建议将签名校验代码放到独立js文件中并配置[js/nvue文件原生混淆加密](app-sec-confusion),或者使用apk加固处理
### isSimulator
[
plus.navigator.isSimulator
](
https://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.isSimulator
)
用于判断当前应用是否运行在模拟器中。
iOS系统由于苹果限制了正式打包后不能在模拟器上运行,一般不存在这种情况;Android系统是开源的,底层代码都是公开的,因此市面上有很多Android模拟器,此问题比较严重。
模拟器通常是运行在PC上,可以利用一些自动化工具自动操作使用App,另外模拟器是一个虚拟操作系统,可能会破坏原生系统的安全性,导致用户敏感信息泄露。
以下示例在App.vue的应用生命周期
[
onLaunch
](
https://uniapp.dcloud.io/collocation/frame/lifecycle?id=%e5%ba%94%e7%94%a8%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f
)
中进行校验,如下:
```
js
onLaunch
:
function
(
inf
)
{
console
.
log
(
'
App Launch
'
);
// #ifdef APP-PLUS
// 模拟器检验
if
(
plus
.
navigator
.
isSimulator
()){
//弹出提示框
uni
.
showModal
({
title
:
'
错误
'
,
content
:
'
应用被不能运行到模拟器!
'
,
complete
:
()
=>
{
plus
.
runtime
.
quit
();
}
});
}
// #endif
}
```
实际项目中可以将此信息提交业务服务器进行判断,如在模拟器环境不允许登录等,多次尝试在模拟器登录可以临时封号,人工客户联系用户核实等,具体可根据业务情况进行调整。
> 提示:为了防止js检验代码被反编译篡改,建议将签名校验代码放到独立js文件中并配置[js/nvue文件原生混淆加密](app-sec-confusion),或者使用apk加固处理
### isSetProxy
[
plus.networkinfo.isSetProxy
](
https://www.html5plus.org/doc/zh_cn/device.html#plus.networkinfo.isSetProxy
)
用于判断当前应用网络环境是否设置代理。
设置代理后所有网络传输的数据都会经过代理服务器,也就是说代理服务器可能看到所有传入内容,导致用户敏感信息泄露、业务服务器被恶意攻击等问题。当然在某些企业内部网络环境为了保证安全,访问公网可能需要设置代理,开发者需要考虑这种需求来决定是否限制应用正常运行。
可以在用户登录时提交当前网络环境是否使用代理,示例代码如下:
```
js
function
login
()
{
//...
//获取网络代理状态
var
isProxy
=
plus
.
networkinfo
.
isSetProxy
();
if
(
isProxy
){
console
.
log
(
"
当前网络环境设置了代理!
"
);
}
//将使用代理状态提交给业务服务器
//...
}
```
### isRoot
[
plus.navigator.isRoot
](
https://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.isRoot
)
用于判断当前应用运行的设备是否被root破解。
> 注: 仅iOS平台支持,Android平台暂不支持
root破解(也叫越狱)是利用iOS系统的漏洞来破解系统安全机制,让任何应用可以获得系统级权限,从而对系统可以进行更灵活的自定义修改,譬如说修改字体、修改主题以及使用一些插件等。iOS系统设计了沙盒机制,限制应用只能使用自身的数据,root破解后则应用可以读取修改其它任何应用的数据,可能导致用户敏感信息泄露,甚至修改其它应用的数据或代码,恶意攻击正常App。
建议在应用启动时判断,如果运行在root破解环境则提示用户无法正常使用,uni-app项目可以在App.vue的应用生命周期
[
onLaunch
](
https://uniapp.dcloud.io/collocation/frame/lifecycle?id=%e5%ba%94%e7%94%a8%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f
)
中进行校验,示例如下:
```
js
onLaunch
:
function
(
inf
)
{
console
.
log
(
'
App Launch
'
);
// #ifdef APP-PLUS
//ROOT检验
if
(
plus
.
navigator
.
isRoot
()){
//弹出提示框
uni
.
showModal
({
title
:
'
错误
'
,
content
:
'
应用被不能运行到越狱或ROOT环境!
'
,
complete
:
()
=>
{
//循环弹出提示框或死循环引起应用退出
}
});
}
// #endif
}
```
> 提示:为了防止js检验代码被反编译篡改,建议将签名校验代码放到独立js文件中并配置[js/nvue文件原生混淆加密](app-sec-confusion),或者使用apk加固处理
docs/tutorial/migration-to-vue3.md
浏览文件 @
8585699a
...
...
@@ -368,3 +368,5 @@
plugins: [uni()],
});
```
-
在vue3 的小程序平台中,监听原生的点击事件可以先使用tap。(在vue3中,移除了.native修饰符,所以编译器无法预知click是要触发原生事件,还是组件的自定义事件,故并未转换成小程序的tap事件)
\ No newline at end of file
docs/uniCloud/_sidebar.md
浏览文件 @
8585699a
...
...
@@ -34,7 +34,7 @@
*
[
定时触发
](
uniCloud/trigger.md
)
*
[
云函数URL化
](
uniCloud/http.md
)
*
云存储
*
[
云存储
](
uniCloud/storage.md
)
*
[
API
](
uniCloud/storage.md
)
*
[
腾讯云自定义登录
](
uniCloud/authentication.md
)
*
[
腾讯云权限管理
](
uniCloud/policy-tcb.md
)
*
[
uni-id用户体系
](
uniCloud/uni-id.md
)
...
...
docs/uniCloud/uni-starter.md
浏览文件 @
8585699a
此差异已折叠。
点击以展开。
docs/unipush.md
浏览文件 @
8585699a
...
...
@@ -66,14 +66,14 @@ iOS平台需要使用到苹果的APNS,务必在后台正确配置苹果推送
使用厂商推送下发推送消息必须设置intent,该数据格式是Android原生Intent对象序列化由来。具体可参考
[
详情
](
https://blog.csdn.net/u011068702/article/details/51406572
)
。并且intent须符合以下格式,此格式时在个推定义额基础上二次封装,所以必须以此格式为准。不按此格式设置intent可能出现用户点击推送消息无法启动APP的问题。
intent数据格式如下:
```
intent:
#Intent;action=android.intent.action.oppopush;launchFlags=0x1
4000000;component=io.dcloud.HBuilder/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end
intent:
//io.dcloud.unipush/?#Intent;scheme=unipush;launchFlags=0x
4000000;component=io.dcloud.HBuilder/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end
```
**component=io.dcloud.HBuilder/io.dcloud.PandoraEntry 其中io.dcloud.HBuilder为APP包名,需要替换为自己APP的包名;**
S.title=的值为推送消息标题,对应5+ API中
[
PushMessage
](
https://www.html5plus.org/doc/zh_cn/push.html#plus.push.PushMessage
)
对象的title属性值;
S.content=的值为推送消息内容,对应5+ API中
[
PushMessage
](
https://www.html5plus.org/doc/zh_cn/push.html#plus.push.PushMessage
)
对象的content属性值;
S.payload=的值为推送消息的数据,对应5+ API中
[
PushMessage
](
https://www.html5plus.org/doc/zh_cn/push.html#plus.push.PushMessage
)
对象的payload属性值;
**launchFlags=0x
1
4000000字段,解决接收多条通知后点击可能无法触发click事件的问题**
**launchFlags=0x4000000字段,解决接收多条通知后点击可能无法触发click事件的问题**
注意事项:
-
intent格式与个推的多厂商pdf文档中描述的不一样,以此格式为准
...
...
@@ -128,7 +128,7 @@ S.payload=的值为推送消息的数据,对应5+ API中[PushMessage](https://
"title"
:
"安卓离线展示的标题"
,
"body"
:
"安卓离线展示的标题"
,
"click_type"
:
"intent"
,
"intent"
:
"intent:
#Intent;launchFlags=0x04000000;action=android.intent.action.oppopush
;component=io.dcloud.HBuilder/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end"
"intent"
:
"intent:
//io.dcloud.unipush/?#Intent;scheme=unipush;launchFlags=0x4000000
;component=io.dcloud.HBuilder/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end"
}
}
}
,
...
...
@@ -200,7 +200,7 @@ public class push2 {
notification1
.
setTitle
(
"安卓离线展示的标题"
);
notification1
.
setBody
(
"安卓离线展示的内容"
);
notification1
.
setClickType
(
"intent"
);
notification1
.
setIntent
(
"intent:
#Intent;launchFlags=0x04000000;action=android.intent.action.oppopush
;component=io.dcloud.HBuilder/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end"
);
notification1
.
setIntent
(
"intent:
//io.dcloud.unipush/?#Intent;scheme=unipush;launchFlags=0x4000000
;component=io.dcloud.HBuilder/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end"
);
//各厂商自有功能单项设置
//ups.addOption("HW", "/message/android/notification/badge/class", "io.dcloud.PandoraEntry ");
//ups.addOption("HW", "/message/android/notification/badge/add_num", 1);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录