Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suncj1314
unidocs-zh
提交
070543ae
U
unidocs-zh
项目概览
suncj1314
/
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,发现更多精彩内容 >>
提交
070543ae
编写于
3月 01, 2023
作者:
DCloud_Heavensoft
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update safe.md
上级
81a5008c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
133 addition
and
0 deletion
+133
-0
docs/tutorial/safe.md
docs/tutorial/safe.md
+133
-0
未找到文件。
docs/tutorial/safe.md
浏览文件 @
070543ae
# 灵魂拷问:你做的应用安全吗?
## 背景
每个工程师,每个测试人员,在验收项目的时候,对功能需求的满足,心里是有底的。甚至也可以模拟大并发来测试应用的性能。
但要问你交付的应用是否安全?那不管工程师还是测试,心里都没底。
> 实现功能没问题,至于安全嘛...
安全是一个独立且专业的事情,如果不是一个优秀的黑客,很难发现应用的众多安全问题。
普通工程师和测试人员是无法达到这个水平的。
由于http的无状态特性,服务器很难识别客户端的真伪。这是一个真实请求,还是伪造的假客户端?一个貌似简单的识别问题,难住了很多人。
网络传输的数据,在中间被各种路由器和不规范的运营商偷窃和劫持。
如果您的应用有如下特征,就非常容易被黑客盯上:
1.
应用中有大量有价值的数据
2.
提供优惠、促销
3.
提供激励视频等奖励分发
攻击者为了你的数据,或者为了褥你的羊毛,可以破解你的网络请求、伪造假的客户端去请求你的服务器、用手机墙批量操作。
你原本期待给正常用户提供福利,以拉新或促活,结果一场促销后,正常用户没得到好处,全给黑客褥走了。
让普通工程师和测试人员具备黑客能力是不现实的,DCloud为开发者赋能,解决了这些安全顾虑。
## uni安全网络
在过去,客户端和服务器是强分离的,它们使用不同的技术开发,中间通过无状态的http协议交流。
现在,DCloud同时提供了端引擎uni-app和云引擎uniCloud,统一了技术栈,在uni-app开发的客户端和uniCloud开发的服务器之间,使用了更安全的网络通信机制。
> 安全网络仅支持App和微信小程序,其他小程序和web无法保证客户端不被伪造。
在uni安全网络里,可靠的解决了如下2个老大难问题:
-
如何确认这个客户端,真的是你的合法客户端?
-
客户端和服务器的通信,如何安全加密?
使用步骤:
1.
在uniCloud控制台选定服务空间,在安全网络设置页面中绑定uni-app的客户端appid
2.
使用DCloud的云打包来打包这个appid的客户端(要在manifest勾选安全网络模块)
这样,这个客户端和这个服务空间之间就建立了安全网络。云端可以准确识别客户端的真伪,可以在uniCloud控制台直接设置拒绝非法客户端连接您的服务空间。
这条安全网络,几乎不会对请求速度等性能指标产生影响,但又保证可以识别假客户端、马甲包。
另外,还可以在指定的网络请求中做内容加密。不管是云对象请求还是云函数的callFunction,都可以设置secret(一个bool参数)来对通信内容加密。
secret设为true时,这些内容将被加密传输,无法被中间的路由器或伪造客户端解密。
但注意内容加密是影响请求速度的,加解密耗时与内容的数据量有关。数据量小时,可以忽略影响;数据量大时,需自己进行实际测试来评估体验。
uni安全网络还可以鉴别客户端的包名、签名证书,识别客户端设备是否被root或越狱,禁止非法设备访问。
uni安全网络需要开发者在uniCloud上开通,但并不收费。
如此高安全的保障,在商业项目中都需要花掉不少银子来采购。但DCloud
**免费**
给uniCloud开发者提供。
## 人机验证
还有一类攻击,攻击者没有破解掉客户端和网络协议,但是用一排排手机墙。
这时,您就需要uni的
[
一键登录
](
/univerify.md
)
和
[
实人认证
](
/uniCloud/frv/intro.md
)
。
`一键登录`
是运营商提供的安全方案,它要求手机中必须插sim卡,并且从sim中精准读取手机号,防止手机短信验证码被打码池伪造返回。
![](
https://img-cdn-aliyun.dcloud.net.cn/client/doc/univerify/demo.png
)
而
`实人认证`
更近一步,是公安部提供的数据库,阿里云提供的活体检测,金融级的安全保障。
输入姓名、身份证,然后启动摄像头,可以检测摄像头前的这个人:
1.
是活人还是静态照片
2.
这个人和指定的名字、身份证号,是否匹配
![](
https://web-assets.dcloud.net.cn/unidoc/zh/202302242037107.jpg
)
这样手机墙的操作者,不但需要有众多手机号、身份证照片,还需要众多人站在手机墙面前做活体检测,这他就褥不着多少羊毛了。
uni的
`一键登录`
和
`实人认证`
不但和uni产品完美结合、快捷开发,还比市面上其他类似产品的价格更便宜。
-
一键登录仅需0.02元/次,比发短信验证码都便宜。
-
实人认证是阶梯价格,
[
详见
](
/uniCloud/frv/price.md
)
这些价格都极具优势。如果您有非常大的量,还可以再联系bd@dcloud.io沟通。
不管是一键登录还是实人认证,在
[
uni-id
](
/uniCloud/uni-id-summary.md
)
里都已经内置集成好。
无需自己写代码。账户的注册、实人认证,这些代码都已经写好并开源在
[
uni-id-pages
](
/uniCloud/uni-id-pages.md
)
项目中。
但是注意
::: warning
如果您没有使用uni安全网络,直接使用一键登录和实人认证。仍然会遇到被刷的风险。
因为这些认证都是收费的,如果没有安全防护,攻击者可以刷你的服务器接口,盗用你的余额来给他提供认证服务,或者干脆就是刷的让你破财。
:::
在人机验证领域,uni还提供了免费的
[
图形验证码
](
/uniCloud/uni-captcha.md
)
。
## 服务器安全
当然有的攻击者,不是为了你的数据或你的羊毛,而是单纯的就想打垮你的服务。最常见的就是DDoS攻击。
此时,如果使用uniCloud,因为域名是阿里云或腾讯云的,ip不是固定的,攻击者无法通过域名和ip单独DDoS你的服务空间。
如果让攻击者攻击整个阿里云或腾讯云的serverless资源池,那这个池子太大了,那些攻击者根本无法打垮uniCloud服务。
uniCloud还提供了
[
ip防刷
](
/uniCloud/ip-filter.md
)
功能,可以在uniCloud web控制台设置,拉黑某些ip,或者自动屏蔽指定时间内访问次数过高的ip。
如果您的应用涉及用户提交内容,那么有一个很大的风险就是用户提交非法内容,导致您的应用被公安或运营商禁封。
此时,uni的
[
内容安全插件
](
https://ext.dcloud.net.cn/plugin?id=5460
)
可以帮助您过滤掉用户提交的风险内容,不管是非法的文字还是图片。
## 客户端代码安全
uni-app或5+App,支持对js文件或nvue文件进行原生加密。让js代码不再明文暴露于客户端。
[
详见
](
/tutorial/app-sec-confusion.md
)
**有uni保驾护航,您可以专注于业务,踏实写代码,安心交付。不用再提心吊胆、担忧各种自己不擅长的事。**
# FAQ常见问题:
-
老项目服务器不是uniCloud的,怎么办?
uni安全网络只能在uni-app客户端和uniCloud服务之间保障安全。如果您的服务器在其他技术上,或者迁移到uniCloud,或者用uniCloud转发。
转发的意思就是客户端和uniCloud联网,uniCloud云函数再与您的传统服务器通信。
一键登录和实人认证是虽然也是uniCloud服务器,但相对独立。传统服务器可以与uniCloud通信来使用这些能力。详见附录中这些产品单独的文档。
附录:
-
uni安全网络文档:
[
https://uniapp.dcloud.net.cn/uniCloud/secure-network.html
](
https://uniapp.dcloud.net.cn/uniCloud/secure-network.html
)
-
app一键登录文档:
[
https://uniapp.dcloud.net.cn/univerify.html
](
https://uniapp.dcloud.net.cn/univerify.html
)
-
app实人认证文档:
[
https://uniapp.dcloud.net.cn/uniCloud/frv/intro.html
](
https://uniapp.dcloud.net.cn/uniCloud/frv/intro.html
)
-
ip防刷:
[
https://uniapp.dcloud.net.cn/uniCloud/ip-filter.html
](
https://uniapp.dcloud.net.cn/uniCloud/ip-filter.html
)
-
图形验证码:
[
https://uniapp.dcloud.net.cn/uniCloud/uni-captcha.html
](
https://uniapp.dcloud.net.cn/uniCloud/uni-captcha.html
)
-
内容安全审查:
[
https://ext.dcloud.net.cn/plugin?id=5460
](
https://ext.dcloud.net.cn/plugin?id=5460
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录