缥帙各舒散,前后互相逾。这篇文章主要讲述yapi禁用注册功能相关的知识,希望能为你提供帮助。
1、为什么禁用注册功能
YAPI默认配置开启了用户注册功能且无需审核,此外管理员账号还存在默认口令,登录后的用户都具备使用Mock功能执行脚本的权限。黑客登录YAPI 管理平台后可利用Mock功能在受影响服务器上执行任意的javascript代码,从而控制目标服务器,如下图,公司YAPI服务器一些常用命令无法使用ss、netstat、ps、lsof,使用wget命令下载,/usr/bin/bsd-port/getty和/usr/bin/node开启进程,同时也会出现流量过大。
【yapi禁用注册功能】解决方式:
杀死进程
killall -9 /tmp/moni.lod
killall -9 /tmp/gates.lod
killall -9 /usr/bin/bsd-port/getty/lock
清除文件
rm -rf /tmp/moni.lod /tmp/gates.lod
rm -rf /etc/init.d/selinux /etc/init.d/DbSecuritySpt
rm -rf /etc/rc1.d/S97DbSecuritySpt /etc/rc1.d/S99selinux
rm -rf /etc/rc2.d/S97DbSecuritySpt /etc/rc2.d/S99selinux
rm -rf /etc/rc3.d/S97DbSecuritySpt /etc/rc3.d/S99selinux
rm -rf /etc/rc4.d/S97DbSecuritySpt /etc/rc4.d/S99selinux
rm -rf /etc/rc5.d/S97DbSecuritySpt /etc/rc5.d/S99selinux
rm -rf /usr/bin/bsd-port/ /tmp/pythompy
rm -rf /usr/bin/lsof /bin/ps /bin/ss /bin/netstat
2、如何禁用注册功能#vim /data/my-yapi/config.json
"port": "3000",
"let filter": "process|exec|require",
"closeRegister":true,#关闭注册功能
"adminAccount": "admin@admin.com",
"db":
"servername": "127.0.0.1",
"DATABASE": "yapi",
"port": "27017"
,
"mail":
"enable": false,
"host": "smtp.163.com",
"port": 465,
"from": "***@163.com",
"auth":
"user": "***@163.com",
"pass": "*****"
# node vendors/server/app.js>
&
/dev/null &
3、禁用注册功能如何注册新用户由于通过web登陆页面无法通过注册功能来实现新用户注册,所以唯一可以想到的是能不能通过数据库端插入数据来实现呢,YAPI后端使用的数据库是MongoDB,如登陆MongoDB
# mongo
>
use yapi
switched to db yapi
>
show tables
adv_mock
adv_mock_case
avatar
follow
group
identitycounters
interface
interface_case
interface_cat
interface_col
log
project
statis_mock
storage
token
user使用用户表即可完成
wiki
>
新用户注册会涉及到两个问题,用户名和密码,密码的话是通过"password"和"passsalt"字段进行加密码,其他需要修改的字段有"_id" 、"username" 、"email",还有一些字段直接和原有用户一样也是可以正常登陆。关键问题还是在于密码如何获取呢,"password"和"passsalt"字段,可以通过已知用户的密码拉判断在插入新记录时,应该输入什么字段。
例如:
"password" : "f6e15d6f1f53d483803a45bd49cbf6214d19ebe6", "passsalt" : "9k55okoxar6"
以上两个字段的值表示的密码为123456
那么在新创建用户时,也是沿用以上两个字段的值:
例如:
db.user.insert( "_id" : 300, "study" : true, "type" : "site", "username" : "test", "password" : "f6e15d6f1f53d483803a45bd49cbf6214d19ebe6", "passsalt" : "9k55okoxar6", "email" : "test@test.com","role" : "admin", "add_time" : 1611824880, "up_time" : 1611824889, "__v" : 0 )
通过如上操作,最后新用户的用户名为test,密码:123456
上面只是举个例子,"password" : "f6e15d6f1f53d483803a45bd49cbf6214d19ebe6", "passsalt" : "9k55okoxar6" 这两个值可以通过你个人账号就可以获取相关密码,每次创建账号时,采用个人账号的密码的这两个字段值进行创建,然后将用户名和密码发给相关的开发人员即可。
推荐阅读
- 测试三层交换机ip routing和no switchport命令的区别
- Kubernetes EFK
- RT-Thread快速入门-事件集
- #yyds干货盘点#Zabbi学习
- 为什么MySQL的主键查询这么快()
- #yyds干货盘点#ffmpeg
- #yyds干货盘点#java高级用法之:在JNA中将本地方法映射到JAVA代码中
- c++核心编程--函数的重载
- k8s集群Job负载支持多个Pod可靠并发,如何权衡利弊选择适合的并行计算模式()