一种Excel从外部获取数据功能的用户身份验证方法

未命名 10-09 阅读:122 评论:0

一种excel从外部获取数据功能的用户身份验证方法
技术领域
1.本发明涉及数据库安全技术领域,具体涉及一种excel从外部获取数据功能的用户身份验证方法。


背景技术:

2.excel文档可以通过“从外部获取数据”功能(wps表格中称为“导入数据”功能)从关系数据库(包含且不限于mssqlserver数据库)中简单、快速获取大量数据,方便使用者对数据进一步的分析和统计;
3.此功能存在数据安全问题,如大多数情况,数据库密码将会保存在文档中,不需要使用者输入,导致只需要获得excel文件即可获得数据。即使在使用时需要输入数据账号的密码,在现实环境中也容易通过人与人之间的传播,而使密码公开化。进而使得数据库管理员需要频繁的修改数据库密码,并通知合规使用人新的密码,这导致了密码管理较为复杂。而文档使用者的ip地址可能不是固定不变的,无法简单的通过限制客户端ip访问来实现对excel文档的使用范围进行控制。使用者甚至可以通过查看excel数据库连接串,直接通过数据库客户端登录数据库,即可获取所有数据,包括其它excel文档关联的数据。这些情况都造成了数据在未授权的合规使用者之外进行传播,对数据安全造成了极大的影响。为此可以采用本发明的对使用者身份短信认证的方法来有效解决这类数据安全问题。


技术实现要素:

4.本发明的目的在于提供一种excel从外部获取数据功能的用户身份验证方法,解决excel文档可直接获取关系数据库中数据所带来的一系列的安全问题。本发明针对数据源是关系数据库(可添加数据库用户并可限制其对数据库对象的访问)。
5.为实现上述技术目的,达到上述技术效果,本发明是通过以下技术方案实现:
6.excel从外部获取数据功能的用户身份验证方法,
7.首先,对数据库对象授权要求:数据库用户不能直接读取表对象的数据,只能通过存储过程返回数据。
8.数据库用户不能直接读取保存随机码和发送时间的表记录,只能通过身份验证函数进行验证。
9.数据访问具体包括以下步骤:
10.s1:excel文档通过文档id和手机号码向服务器请求随机码;
11.s2:服务端向授权的手机号发送随机码;
12.s3:服务端记录随机码及发送时间,并写入日志;
13.s4:服务端返回授权id,如果id》0,表示随机发送成功,继续下一步,否而结束操作;如果授权id为0,表示验证失败;如果授权id为-1表示此报表已停用;如果授权id为-2,表示手机号过期;如果授权id为-3,表示手机号未注册;
14.s5:收到随机码后,指定时间内在excel文档上填入随机码,点击按钮请求数据;
15.s6:excel文档向服务器请求数据,同时上传授权id和随机码;
16.s7:存过过程调用身份验证函数,传参为文档id、授权id和随机码,获得权限标识,由存储过程代码编写者自行解释权限标识,执行sql从表对象中获得数据;
17.s8:sql返回数据;
18.s9:存储过程将数据返回给excel文档,excel文档显示数据。
19.进一步的,本发明还包括数据库表对象:
20.报表种类:对excel文档进行唯一编号:文档id
21.报表账号:即excel文档编号,和用户账号对应关系。一个excel文档编号授权一个账号即对应一条记录。此表的唯一编号id即为“授权id”。
22.报表日志:用于记录账号、excel文档编号,和随机码发送时间的历史记录。
23.进一步的,数据库存储过程【获取随机码】逻辑步骤:
24.step.1:通过文档id和手机号,找到授权记录。确保文档未停用,手机号码在有效期。同一个文档id,10秒内不再重复对同一个授权手机号发随机码。成功转下一步;失败,转到step.4。
25.step.2:如果找到授权记录,生成随机码,并发送到手机号。保存随机码和当前时间。
26.step.3:向报表日志表中写入日志记录。
27.step.4:发送随机码成功,返回授权id(》0);文档已停用,返回-1;手机号失效,返回-2;手机号未注册,返回-3;其它失败原因返回0。
28.进一步的,函数【身份验证】逻辑步骤:
29.step.1:通过传入授权id找到授权记录,检查文档id和随机码是否与授权一致,是否已超时,手机号是否在有效期。
30.step.2:如果验证通过,返回授权记录中的权限描述字符串,否则返回空串。
31.进一步的,数据库存储过程(或表值函数)【文档获取数据】:
32.将原有excel数据源的sql封装至此存储过程中,每个excel文档至少对应一个获取数据的存储过程。存储过程除了原有查询条件的参数外,增加授权id和随机码两个参数。
33.存储过程中调用【身份验证】函数,传入文档id、授权id和随机码,获得权限描述字符串。在获得数据的sql语句中用对权限描述字符串进行权限判断。如果函数返回空字符串,返回的结果集应为0行记录。
34.也可以通过权限描述字符串控制返回数据集的列集,即不同的权限值对应不同的返回列集。
35.进一步的,excel文档按钮宏代码【获取随机码】:
36.step.1:检查授权id是否已存在:若授权id》0,且未超时,不再发送随机码,提示用户随机码已发送,此过程结果。否则将授权id赋值为0,转到一下步。
37.step.2:新建adodb.command对象,调用存储过程【获取随机码】,参数为文档id(此文档常量),手机号(使用者填入)。
38.step.3:将存储过程返回值赋值给授权id。如果授权id》0,表示随机码发送成功,提示用户短信发送成功;保存本地当前时间为短信发送时间。如果授权id=0,提示使用者认证失败;如果授权id=-1,提示使用者此文档已被禁用;如果授权id=-2,提示手机号失
效;如果授权id=-3,提示手机号未注册。
39.进一步的,excel文档按钮宏代码【获取数据】:
40.step.1:检查本地保存的授权id是否》0,是否超时,通过检查转到下一步。否则提示用户先获得随机码,结束此过程。
41.step.2:通过excel数据源对象,调用存储过程。参数为查询条件参数,以及本地保存的授权id,用户手机收到的随机码。如果服务端验证失败,返回结果记录数为0行。
42.step.3:授权id赋值为0。
43.进一步的,excel文档中使用的数据库用户授权:
44.对存储过程【获取随机码】授予执行权限。
45.对存储过程【文档获取数据】授予执行权限。
46.不能对数据库用户授予相关表对象的访问权限。
47.本发明的有益效果:
48.1.数据安全性提升:本发明通过限制数据库用户只能通过存储过程返回数据,避免了直接从关系数据库中读取表对象数据所带来的安全风险。数据库用户无法直接读取表对象的数据,因此即使用户通过数据库客户端直接登录数据库,也无法获取未经随机号认证的非授权数据,大大降低了数据泄露和滥用的风险。
49.2.身份验证功能:本发明在excel文档中添加了用户身份验证功能,通过发送随机码到用户的手机号码,并要求用户在指定时间内在excel文档中填入正确的随机码,从而确保只有经过验证的用户才能获取数据。用户必须将手机号事先添加到白名单中并获得授权,才能接收到随机码,这有效地限制了数据的访问权限,提高了数据安全性。
50.3.记录管理和监控:本发明通过报表日志记录账号、excel文档编号和随机码发送时间的历史记录,实现了对用户手机号的管理和权限控制。管理员可以通过此记录对账号进行开通、禁用和长期未使用账号的禁用等操作,确保只有经过授权的用户才能访问数据。同时,日志记录还提供了对数据访问的监控和审计功能,管理员可以追踪和监控数据的使用情况,及时发现异常操作。
51.4.灵活的权限控制:通过存储过程中的权限描述字符串,本发明实现了对数据访问的灵活控制。在存储过程中可以根据权限描述字符串对数据访问进行判断和限制。不同的权限值可以对应不同的数据集合和返回列集,从而实现了对数据展示的精确控制,满足了不同用户对数据的不同需求。
52.5.用户友好性:本发明通过在excel文档中添加按钮宏代码,提供了用户友好的操作方式。用户可以通过点击按钮来获取随机码和数据,操作简单方便。用户无需具备复杂的数据库操作知识,只需按照指示进行操作即可完成数据获取,大大提高了用户的使用体验。
53.综上所述,本发明通过身份验证、权限控制和日志监控等手段,有效提升了excel从外部获取数据功能的安全性和可控性,避免了数据泄露和滥用的风险,同时提高了用户的使用体验。
54.当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
55.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的
附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
56.图1为本发明实施例所述数据访问步骤示意图。
具体实施方式
57.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
58.实施例1
59.如图1所示
60.本实施例所述的excel从外部获取数据功能的用户身份验证方法,包括数据库,数据库对象授权要求包括:数据库用户不能直接读取表对象的数据,只能通过存储过程返回数据;数据库用户不能直接读取保存随机码和发送时间的表记录,只能通过身份验证函数进行验证;
61.具体包括以下步骤:
62.s1:excel文档通过文档id和手机号码向服务器请求随机码;
63.s2:服务端向授权的手机号发送随机码;
64.s3:服务端记录随机码及发送时间,并写入日志;
65.s4:服务端返回授权id,如果id》0,表示随机发送成功,继续下一步,否而结束操作;如果授权id为0,表示验证失败;如果授权id为-1表示此报表已停用;如果授权id为-2,表示手机号过期;如果授权id为-3,表示手机号未注册;
66.s5:收到随机码后,指定时间内在excel文档上填入随机码,点击按钮请求数据;
67.s6:excel文档向服务器请求数据,同时上传授权id和随机码;
68.s7:存过过程调用身份验证函数,传参为文档id、授权id和随机码,获得权限标识,由存储过程代码编写者自行解释权限标识,执行sql从表对象中获得数据;
69.s8:sql返回数据;
70.s9:存储过程将数据返回给excel文档,excel文档显示数据。
71.在本实施例中,数据库表对象包括:
72.报表种类:对excel文档进行唯一编号:文档id;
73.报表账号:即excel文档编号,和用户账号对应关系;一个excel文档编号授权一个账号即对应一条记录;此表的唯一编号id即为“授权id”;
74.报表日志:用于记录账号、excel文档编号,和随机码发送时间的历史记录。
75.在本实施例中,所述数据库的存储过程(或表值函数)包括:将原有excel数据源的sql封装至此存储过程中,每个excel文档至少对应一个获取数据的存储过程;存储过程除了原有查询条件的参数外,增加授权id和随机码两个参数;
76.存储过程中调用身份验证函数,传入文档id、授权id和随机码,获得权限描述字符串;在获得数据的sql语句中用对权限描述字符串进行权限判断;如果函数返回空字符串,
返回的结果集应为0行记录。
77.实施例2
78.本实施例所述的excel从外部获取数据功能的用户身份验证方法,还包括:
79.数据库存储过程【获取随机码】逻辑步骤:
80.step.1:通过文档id和手机号,找到授权记录。确保文档未停用,手机号码在有效期。同一个文档id,10秒内不再重复对同一个授权手机号发随机码。成功转下一步;失败,转到step.4。
81.step.2:如果找到授权记录,生成随机码,并发送到手机号。保存随机码和当前时间。
82.step.3:向报表日志表中写入日志记录。
83.step.4:发送随机码成功,返回授权id(》0);文档已停用,返回-1;手机号失效,返回-2;手机号未注册,返回-3;其它失败原因返回0。
84.在本实施例中,函数【身份验证】逻辑步骤:
85.step.1:通过传入授权id找到授权记录,检查文档id和随机码是否与授权一致,是否已超时,手机号是否在有效期。
86.step.2:如果验证通过,返回授权记录中的权限描述字符串,否则返回空串。
87.在本实施例中,数据库存储过程(或表值函数)【文档获取数据】:
88.将原有excel数据源的sql封装至此存储过程中,每个excel文档至少对应一个获取数据的存储过程。存储过程除了原有查询条件的参数外,增加授权id和随机码两个参数。
89.存储过程中调用【身份验证】函数,传入文档id、授权id和随机码,获得权限描述字符串。在获得数据的sql语句中用对权限描述字符串进行权限判断。如果函数返回空字符串,返回的结果集应为0行记录。
90.也可以通过权限描述字符串控制返回数据集的列集,即不同的权限值对应不同的返回列集。
91.在本实施例中,excel文档按钮宏代码【获取随机码】:
92.step.1:检查授权id是否已存在:若授权id》0,且未超时,不再发送随机码,提示用户随机码已发送,此过程结果。否则将授权id赋值为0,转到一下步。
93.step.2:新建adodb.command对象,调用存储过程【获取随机码】,参数为文档id(此文档常量),手机号(使用者填入)。
94.step.3:将存储过程返回值赋值给授权id。如果授权id》0,表示随机码发送成功,提示用户短信发送成功;保存本地当前时间为短信发送时间。如果授权id=0,提示使用者认证失败;如果授权id=-1,提示使用者此文档已被禁用;如果授权id=-2,提示手机号失效;如果授权id=-3,提示手机号未注册。
95.在本实施例中,excel文档按钮宏代码【获取数据】:
96.step.1:检查本地保存的授权id是否》0,是否超时,通过检查转到下一步。否则提示用户先获得随机码,结束此过程。
97.step.2:通过excel数据源对象,调用存储过程。参数为查询条件参数,以及本地保存的授权id,用户手机收到的随机码。如果服务端验证失败,返回结果记录数为0行。
98.step.3:授权id赋值为0。
99.在本实施例中,excel文档中使用的数据库用户授权:
100.对存储过程【获取随机码】授予执行权限。
101.对存储过程【文档获取数据】授予执行权限。
102.不能对数据库用户授予相关表对象的访问权限。
103.实施例3
104.本发明其利用数据库具有只对数据库用户授权运行指定存储过程(或表值函数,下同)而无需对其授权相关表对象访问权限的特点,隐藏真正的数据库表对象,使用者只能在短信随机码验证身份后,运行存储过程才能获得数据。
105.其中,使用者身份验证是通过使用者手机号接收随机验证码进行验证,同时限时验证码有效时间。使用者手机号(或邮件地址,下同)必须提前加入白名单,否则不能接收短信随机码,验证通过后才能获得被授权的excel文档数据。而其它非授权的excel文档,仍然不能获取数据。使用者即使通过数据库客户端直接登录数据库,因为不能直接访问表对象,未通过随机号认证,也无法获得非授权的数据。同时,本发明也实现对各文档的用户手机号进行管理和权限控制,包括账号开通、禁用、长期未使用账号禁用,访问时进行日志记录,且针对同一excel文档,可以实现不同的使用者的权限区分。
106.以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

技术特征:
1.一种excel从外部获取数据功能的用户身份验证方法,包括数据库,其特征在于,数据库对象授权要求包括:数据库用户不能直接读取表对象的数据,只能通过存储过程返回数据;数据库用户不能直接读取保存随机码和发送时间的表记录,只能通过身份验证函数进行验证;具体包括以下步骤:s1:excel文档通过文档id和手机号码向服务器请求随机码;s2:服务端向授权的手机号发送随机码;s3:服务端记录随机码及发送时间,并写入日志;s4:服务端返回授权id,如果id>0,表示随机发送成功,继续下一步,否而结束操作;如果授权id为0,表示验证失败;如果授权id为-1表示此报表已停用;如果授权id为-2,表示手机号过期;如果授权id为-3,表示手机号未注册;s5:收到随机码后,指定时间内在excel文档上填入随机码,点击按钮请求数据;s6:excel文档向服务器请求数据,同时上传授权id和随机码;s7:存过过程调用身份验证函数,传参为文档id、授权id和随机码,获得权限标识,由存储过程代码编写者自行解释权限标识,执行sql从表对象中获得数据;s8:sql返回数据;s9:存储过程将数据返回给excel文档,excel文档显示数据。2.如权利要求1所述的excel从外部获取数据功能的用户身份验证方法,其特征在于:数据库表对象包括:报表种类:对excel文档进行唯一编号:文档id;报表账号:即excel文档编号,和用户账号对应关系;一个excel文档编号授权一个账号即对应一条记录;此表的唯一编号id即为“授权id”;报表日志:用于记录账号、excel文档编号,和随机码发送时间的历史记录。3.如权利要求1所述的excel从外部获取数据功能的用户身份验证方法,其特征在于:所述数据库的存储过程(或表值函数)包括:将原有excel数据源的sql封装至此存储过程中,每个excel文档至少对应一个获取数据的存储过程;存储过程除了原有查询条件的参数外,增加授权id和随机码两个参数;存储过程中调用身份验证函数,传入文档id、授权id和随机码,获得权限描述字符串;在获得数据的sql语句中用对权限描述字符串进行权限判断;如果函数返回空字符串,返回的结果集应为0行记录。

技术总结
本发明涉及数据库安全技术领域,具体涉及一种Excel从外部获取数据功能的用户身份验证方法,利用数据库具有只对数据库用户授权运行指定存储过程而无需对其授权相关表对象访问权限的特点,隐藏真正的数据库表对象,使用者只能在短信随机码验证身份后,运行存储过程才能获得数据。避免了直接从关系数据库中读取表对象数据所带来的安全风险。数据库用户无法直接读取表对象的数据,因此即使用户通过数据库客户端直接登录数据库,也无法获取未经随机号认证的非授权数据,大大降低了数据泄露和滥用的风险。的风险。的风险。


技术研发人员:罗裕梅 梅涛 黄芳 李睿剑 张语珂
受保护的技术使用者:云南大学
技术研发日:2023.07.05
技术公布日:2023/10/6
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐