CN113704819A - 一种应用日志的打码输出方法、装置及计算机可读存储介质 - Google Patents

一种应用日志的打码输出方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN113704819A
CN113704819A CN202110918655.7A CN202110918655A CN113704819A CN 113704819 A CN113704819 A CN 113704819A CN 202110918655 A CN202110918655 A CN 202110918655A CN 113704819 A CN113704819 A CN 113704819A
Authority
CN
China
Prior art keywords
sensitive information
interface
log
thread
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110918655.7A
Other languages
English (en)
Other versions
CN113704819B (zh
Inventor
陈林
林浩丹
王炟
柏慧荣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Unionpay Co Ltd
Original Assignee
China Unionpay Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Unionpay Co Ltd filed Critical China Unionpay Co Ltd
Priority to CN202110918655.7A priority Critical patent/CN113704819B/zh
Publication of CN113704819A publication Critical patent/CN113704819A/zh
Priority to PCT/CN2022/074660 priority patent/WO2023015852A1/zh
Application granted granted Critical
Publication of CN113704819B publication Critical patent/CN113704819B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种应用日志打码输出方法、装置、系统及计算机可读存储介质,该方法包括:针对数据输入接口进行接口定义,以标记敏感信息字段;从数据输入接口提取标记的敏感信息字段对应的敏感信息值,并写入线程变量存储器;当需要打印日志时,调用日志打印封装接口查询线程变量存储器,若待打印的日志消息中存在敏感信息值,则对日志消息进行打码后安全输出。利用上述方法,能够避免打码错误,且打码效率更高。

Description

一种应用日志的打码输出方法、装置及计算机可读存储介质
技术领域
本发明属于日志输出领域,具体涉及一种应用日志的打码输出方法、装置及计算机可读存储介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着对隐私数据的保护要求越来越严,应用日志需对敏感数据打码后输出。若要实现针对包括敏感信息的日志打码输出,一般需要在应用调用日志底层框架输出日志之前通过各种手段将带有敏感信息的日志内容转换按照固定逻辑进行转换,再用转换后的打码内容作为输入调用日志框架进行输出。
然而,上述方案中每次调用日志底层框架输出日志前,需要附带额外的打码预处理,等于应用调用日志的API发生改变,应用需要做改造,而这个对于编程习惯有较大改变,而且容易疏忽导致某一处日志打印调用前漏加预处理,导致达不到打码效果。此外,打码预处理一般是基于规则的,比如对日志打印内容进行正则表达式匹配,匹配后再进行打码处理,这样会产生效率低下问题,也无法避免出现误判。
因此,如何高效且准确地进行应用日志打码输出是一个亟待解决的问题。
发明内容
针对上述现有技术中存在的问题,提出了一种应用日志的打码输出方法、装置及计算机可读存储介质,利用这种方法、装置及计算机可读存储介质,能够解决上述问题。
本发明提供了以下方案。
第一方面,提供一种一种应用日志打码输出方法,包括:针对数据输入接口进行接口定义,以标记敏感信息字段;从数据输入接口提取所述标记的所述敏感信息字段对应的敏感信息值,并写入线程变量存储器;当需要打印日志时,调用日志打印封装接口查询线程变量存储器,若待打印的日志消息中存在敏感信息值,则对日志消息进行打码后安全输出。
一种实施方式中,将敏感信息值写入线程变量存储器之前,方法还包括:创建线程变量存储器,其用于保存当前线程的敏感信息值列表。
一种实施方式中,数据输入接口包括:服务接口和/或数据库接口。
一种实施方式中,方法还包括:在当前线程执行的请求处理完成之后,清除线程变量存储器中的当前线程的敏感信息值列表。
一种实施方式中,针对数据输入接口进行接口定义,以标记敏感信息字段,还包括:针对JAVA的面向对象编程,在参数类和/或数据库操作的Java Bean类的敏感信息字段上添加敏感字段注解。
一种实施方式中,从数据输入接口提取接口定义的敏感信息值,还包括:针对JAVA的面向对象编程,在应用中添加AOP切面,从而对输入的服务接口参数,将带有敏感字段注解的敏感信息字段的值存放到线程变量存储器,和/或,针对数据库操作的Repository类的方法,对方法返回值中的实体Bean将带有敏感字段注解的敏感信息字段的值存放到线程变量存储器。
一种实施方式中,针对数据输入接口进行接口定义,以标记敏感信息字段,还包括:针对C语言的结构化编程,定义最外层接口输入的参数结构体和/或数据库接口层宿主变量结构体,同时申明结构体中涉及敏感信息的起止偏移量静态数组。
一种实施方式中,从数据输入接口提取接口定义的敏感信息值,还包括:针对C结构化编程语言,在获得参数或数据库数组变量的值的同时,根据敏感信息的起止偏移量静态数组提取敏感信息值,并写入线程变量存储器。
一种实施方式中,调用日志打印封装接口查询线程变量存储器,若日志消息中存在敏感信息值则对日志消息进行打码后安全输出,包括:依次查找日志消息中是否存在线程变量存储器中的敏感信息值,若存在,则对日志消息中对应于敏感信息值的输入参数数值进行打码处理,以输出新数值串;采用新数值串并调用标准开发库或第三方日志框架进行安全输出。
一种实施方式中,还包括:当日志打印级别低于设定级别时,直接调用标准开发库或第三方日志框架进行输出。
第二方面,提供一种应用日志打码输出装置,包括:接口定义与标记组件,用于针对数据输入接口进行接口定义,以标记敏感信息字段;标记变量提取组件,用于从数据输入接口提取标记的敏感信息字段对应的敏感信息值,并写入线程变量存储器;日志打印封装组件,用于当需要打印日志时,调用日志打印封装接口查询线程变量存储器,若待打印的日志消息中存在敏感信息值,则对日志消息进行打码后安全输出。
一种实施方式中,还包括:线程变量管理组件,用于创建线程变量存储器以保存当前线程的敏感信息值列表。
一种实施方式中,数据输入接口包括:服务接口和/或数据库接口。
一种实施方式中,线程变量管理组件,还用于:在当前线程执行的请求处理完成之后,清除线程变量存储器中的当前线程的敏感信息值列表。
一种实施方式中,接口定义与标记组件,还用于:针对JAVA的面向对象编程,在参数类和/或数据库操作的Java Bean类的敏感信息字段上添加敏感字段注解。
一种实施方式中,标记变量提取组件,还用于:针对JAVA的面向对象编程,在应用中添加AOP切面,从而对输入的服务接口参数,将带有敏感字段注解的敏感信息字段的值存放到线程变量存储器,和/或,针对数据库操作的Repository类的方法,对方法返回值中的实体Bean将带有敏感字段注解的敏感信息字段的值存放到线程变量存储器。
一种实施方式中,接口定义与标记组件,还用于:针对C语言的结构化编程,定义最外层接口输入的参数结构体和/或数据库接口层宿主变量结构体,同时申明结构体中涉及敏感信息的起止偏移量静态数组。
一种实施方式中,标记变量提取组件,还用于:针对C结构化编程语言,在获得参数或数据库数组变量的值的同时,根据敏感信息的起止偏移量静态数组提取敏感信息值,并写入线程变量存储器。
一种实施方式中,日志打印封装组件,还用于:依次查找日志消息中是否存在线程变量存储器中的敏感信息值,若存在,则对日志消息中对应于敏感信息值的输入参数数值进行打码处理,以输出新数值串;采用新数值串并调用标准开发库或第三方日志框架进行安全输出。
一种实施方式中,日志打印封装组件,还用于:当日志打印级别低于设定级别时,直接调用标准开发库或第三方日志框架进行输出。
第三方面,提供一种应用日志打码输出装置,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:如第一方面的方法。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质存储有程序,当程序被多核处理器执行时,使得多核处理器执行如第一方面的方法。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:采用本实施例中的应用日志打码输出方案,可以避免出现打码误判问题,而且效率要比基于正则的规则匹配高。
应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施方式。
附图说明
通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的优点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
图1为根据本发明一实施例的应用打码输出装置的结构示意图;
图2为根据本发明一实施例的应用打码输出方法的流程示意图;
图3为根据本发明又一实施例的应用打码输出装置的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在本申请实施例的描述中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请中的所有代码都是示例性的,本领域技术人员根据所使用的编程语言,具体的需求和个人习惯等因素会在不脱离本申请的思想的条件下想到各种变型。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
图1为根据本申请一实施例的应用日志打码输出装置的结构示意图。
如图1所示,应用日志打码输出装置100可以包括:接口定义与标记组件101、其用于针对数据输入接口进行接口定义,以标记敏感信息字段;线程变量存储器103用于保存当前线程的敏感信息值列表;标记变量提取组件104,其用于从数据输入接口提取标记的敏感信息字段对应的敏感信息值,并写入线程变量存储器103;日志打印封装组件105,其用于当需要打印日志时,调用日志打印封装接口查询线程变量存储器,若待打印的日志消息中存在敏感信息值,则对日志消息进行打码后安全输出。
传统基于正则等匹配规则的打码输出容易导致误判,且效率不高。比如,手机号虽然都是数字,各国各地区的长度不一样,无论怎么指定规则,若针对涵盖信息元素较多的接口数据输出日志,因为不能保证接口中不会出现同样长度的数字串内容,也就可能把本不是手机号的字符串即不需要打码的内容给额外出理了,也可能出现漏调本该打码的日志内容。
在本申请实施例中的应用日志打码输出方案中,最终实现的是在一个字符串(待打印的日志消息)中搜索另外一个固定子串(存在线程变量存储器中的敏感信息值),如此不会出现误判问题,而且效率要比基于正则的规则匹配高。
图2为根据本申请一实施例的应用日志打码输出方法的流程示意图,用于执行应用日志的安全输出,在该流程中,从设备角度而言,执行主体可以是一个或者多个电子设备;从程序角度而言,执行主体相应地可以是搭载于这些电子设备上的程序。在本实施例中,方法的执行主体可以是图1所示实施例中的应用日志打码输出装置。
如图2所示,本实施例提供的方法100可以包括以下步骤:
S201、针对数据输入接口进行接口定义,以标记敏感信息字段。
在一实施例中,数据输入接口包括:服务接口和/或数据库接口,当然也可以包括其他用于数据输入的接口,本申请对此不作具体限制。
在一实施例中,S201可以包括:针对JAVA的面向对象编程,在参数类和/或数据库操作的Java Bean类的敏感信息字段上添加敏感字段注解。
例如,针对Java等面向对象的编程,可以在参数类的敏感信息字段上添加注解“@Sensitive”,标记其是敏感字段,而在数据库操作Java实体Bean类的敏感信息字段上添加注解“@Sensitive”,标记其是敏感字段。
另一实施例中,S201还可以包括:针对C语言的结构化编程,定义最外层接口输入的参数结构体和/或数据库接口层宿主变量结构体,同时申明结构体中涉及敏感信息的起止偏移量静态数组。
例如,针对C语言的结构化编程,则可以定义最外层接口输入的参数结构体或者数据库接口层宿主变量结构体,同时申明该结构体中涉及敏感数据的起止偏移量静态数组(形如“2,23”,“40,48”),这里“2,23”表示结构体中第2字节到至第23字节为敏感数据,“40,48”表示结构体中第40字节到第48字节为敏感数据。针对C结构化编程语言,如此定义则直接可以通过指针直接截取,而不需要知道具体哪个字段,再通过字段名转换,因为即使转换最终也还是会落到偏移量上。
S202、从数据输入接口提取标记的敏感信息字段对应的敏感信息值,并写入线程变量存储器。
在一种实施方式中,在S202之前,还可以执行:创建线程变量存储器,其用于保存当前线程的敏感信息值列表。具体来说,可以在当前线程执行的请求处理之前即时创建线程变量存储器,也可以在组件初始化时预创建该线程变量存储器,本申请对此不作具体限制。
参考图1,可以在REST等服务接口、数据库存取接口添加标记变量提取组件104,负责统一拦截敏感信息值并存入线程变量存储器,以供后续日志输出中由底层组件根据敏感信息值进行日志过滤。
在一种实施方式中,S202可以包括:针对JAVA的面向对象编程,在应用中添加AOP(Aspect Oriented Programming,面向切面编程,)切面,从而对输入的服务接口参数,将带有敏感字段注解的敏感信息字段的值存放到线程变量存储器,和/或,针对数据库操作的Repository类的方法,对方法返回值中的实体Bean将带有敏感字段注解的敏感信息字段的值存放到线程变量存储器。
例如,对传进来的REST接口参数,将带有诸如“@Sensitive”的预设注解的字段的值存放到当前线程的敏感信息值列表,或者对于数据库操作的Repository类的方法,对方法返回值中的实体Bean将带有诸如“@Sensitive”的预设注解注解的字段的值存放到当前线程的敏感信息值列表。
在一种实施方式中,S202还可以包括:针对C结构化编程语言,在获得参数或数据库数组变量的值的同时,根据敏感信息的起止偏移量静态数组提取敏感信息值,并写入线程变量存储器。
参考图1,可以通过线程变量管理组件102创建一个线程变量存储器103,用于存放当前线程的敏感信息值列表,线程变量存储器比如可以是Java应用中ThreadLocal,C语言中的局部变量等。
S203、当需要打印日志时,调用日志打印封装接口查询线程变量存储器,若待打印的日志消息中存在敏感信息值,则对日志消息进行打码后安全输出。
参考图1,利用日志打印封装组件105执行该S203。本实施例中,打印日志不再调用标准开发库或者第三方日志框架中的println()或者logger.info()等,该日志打印封装组件105设计为对上述标准开发库或者第三方日志框架中的打印操作进行一层封装,且日志打印封装组件105的对外接口参数与标准开发库或第三方库保持一致,只存在名称的差异。日志打印封装组件105本身相当于一个日志框架,以函数库或者开发包的形式供编码时引用。
进一步地,日志打印封装组件105可以分两个子处理模块:第一子处理模块,其依次查找日志消息中是否存在线程变量存储器中的敏感信息值,若存在,则对日志消息中对应于敏感信息值的输入参数数值进行打码处理,以输出新数值串;第二子处理模块,其采用新的数值串调用标准开发库或第三方日志框架进行安全输出。
通过上述步骤最终实现的是在一个字符串(待打印的日志消息)中搜索另外一个固定子串(线程变量存储器中的敏感信息值),如此不会出现误判问题,而且效率要比基于正则的规则匹配高。这里匹配的是敏感数据的数值,完全不受其它描述性内容的约束。针对程序员编码习惯的改变极小。例如,程序员的编码习惯比如是从println(“PAN=%s”,“622888000000001”)写法向如senitive_println(“PAN=%s”,“622888000000001”)的转变。而且只要当前线程执行的请求未处理结束,一旦入口处向线程变量存储器添加了敏感信息值,后续任何处理环节在日志打印封装组件的作用下,打印的日志都将被安全过滤,不会有任何遗漏。
可选的,上述方法还可以包括:当日志打印级别低于设定级别时,直接调用标准开发库或第三方日志框架进行输出。也即,为增加开发调试的可读性或者生产运行消息,日志打印封装组件提供日志数据级别控制,当日志打印级别低于一定级别的时候,直接跳过第一子处理模块,即不查找线程变量存储器去改变打印数值串。
此外,打码替换可基于规则进行替换,比如可以根据数值长度进行替换,当敏感信息值对应的数值串大于等于8字节时,保留前40%和尾部20%的字符不变,中间以*代替。或者,当数值串大于3位、小于8位时,只保留最后2位可见,其他以*代替。或者,当数值串小于等于3字节时,全部以*代替。
在一实施例中,上述方法还可以进一步包括:在当前线程执行的请求处理完成之后,清除线程变量存储器中的当前线程的敏感信息值列表。具体来说,参考图1,当请求处理结束后,调用线程管理组件102的清理接口,清理线程变量存储器。例如,Java中在相同切面中,REST接口处理完成后清除当前线程的敏感信息值列表。如此当前线程或者服务接受下一个请求时重新开始新的过程,不会有任何干扰。
在本说明书的描述中,参考术语“一些可能的实施方式”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
关于本申请实施例的方法流程图,将某些操作描述为以一定顺序执行的不同的步骤。这样的流程图属于说明性的而非限制性的。可以将在本文中所描述的某些步骤分组在一起并且在单个操作中执行、可以将某些步骤分割成多个子步骤、并且可以以不同于在本文中所示出的顺序来执行某些步骤。可以由任何电路结构和/或有形机制(例如,由在计算机设备上运行的软件、硬件(例如,处理器或芯片实现的逻辑功能)等、和/或其任何组合)以任何方式来实现在流程图中所示出的各个步骤。
基于相同的技术构思,本发明实施例还提供一种应用日志打码输出装置,用于执行上述任一实施例所提供的应用日志打码输出方法。图1为本发明实施例提供的一种应用日志打码输出结构示意图。
如图1所示,装置100包括:
接口定义与标记组件101,用于针对数据输入接口进行接口定义,以标记敏感信息字段;线程变量存储器103,用于保存当前线程的敏感信息值列表;标记变量提取组件104,用于从数据输入接口提取标记的敏感信息字段对应的敏感信息值,并写入线程变量存储器103;日志打印封装组件105,用于当需要打印日志时,调用日志打印封装接口查询线程变量存储器,若待打印的日志消息中存在敏感信息值,则对日志消息进行打码后安全输出。
一种实施方式中,还包括:线程变量管理组件102,用于创建线程变量存储器103以保存当前线程的敏感信息值列表。
一种实施方式中,数据输入接口包括:服务接口和/或数据库接口。
一种实施方式中,线程变量管理组件102,还用于:在当前线程执行的请求处理完成之后,清除线程变量存储器中的当前线程的敏感信息值列表。
一种实施方式中,接口定义与标记组件101,还用于:针对JAVA的面向对象编程,在参数类和/或数据库操作的Java Bean类的敏感信息字段上添加敏感字段注解。
一种实施方式中,标记变量提取组件104,还用于:针对JAVA的面向对象编程,在应用中添加AOP切面,从而对输入的服务接口参数,将带有敏感字段注解的敏感信息字段的值存放到线程变量存储器,和/或,针对数据库操作的Repository类的方法,对方法返回值中的实体Bean将带有敏感字段注解的敏感信息字段的值存放到线程变量存储器。
一种实施方式中,接口定义与标记组件101,还用于:针对C语言的结构化编程,定义最外层接口输入的参数结构体和/或数据库接口层宿主变量结构体,同时申明结构体中涉及敏感信息的起止偏移量静态数组。
一种实施方式中,标记变量提取组件104,还用于:针对C结构化编程语言,在获得参数或数据库数组变量的值的同时,根据敏感信息的起止偏移量静态数组提取敏感信息值,并写入线程变量存储器。
一种实施方式中,日志打印封装组件105,还用于:依次查找日志消息中是否存在线程变量存储器中的敏感信息值,若存在,则对日志消息中对应于敏感信息值的输入参数数值进行打码处理,以输出新数值串;采用新数值串并调用标准开发库或第三方日志框架进行安全输出。
一种实施方式中,日志打印封装组件105,还用于:当日志打印级别低于设定级别时,直接调用标准开发库或第三方日志框架进行输出。
需要说明的是,本申请实施例中的应用日志打码输出装置可以实现前述应用日志打码输出方法的实施例的各个过程,并达到相同的效果和功能,这里不再赘述。
图3为根据本申请一实施例的应用日志打码输出装置,用于执行图2所示出的应用日志打码输出方法,该装置包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施例的方法。
根据本申请的一些实施例,提供了应用日志打码输出方法的非易失性计算机存储介质,其上存储有计算机可执行指令,该计算机可执行指令设置为在由处理器运行时执行:上述实施例的方法。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以其描述进行了简化,相关之处可参见方法实施例的部分说明即可。
本申请实施例提供的装置、设备和计算机可读存储介质与方法是一一对应的,因此,装置、设备和计算机可读存储介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置、设备和计算机可读存储介质的有益技术效果。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (22)

1.一种应用日志打码输出方法,其特征在于,包括:
针对数据输入接口进行接口定义,以标记敏感信息字段;
从数据输入接口提取所述标记的所述敏感信息字段对应的敏感信息值,并写入线程变量存储器;
当需要打印日志时,调用日志打印封装接口查询所述线程变量存储器,若待打印的日志消息中存在所述敏感信息值,则对所述日志消息进行打码后安全输出。
2.根据权利要求1所述的方法,其特征在于,将所述敏感信息值写入所述线程变量存储器之前,所述方法还包括:
创建线程变量存储器,其用于保存当前线程的敏感信息值列表。
3.根据权利要求1所述的方法,其特征在于,所述数据输入接口包括:服务接口和/或数据库接口。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在当前线程执行的请求处理完成之后,清除所述线程变量存储器中的当前线程的敏感信息值列表。
5.根据权利要求1所述的方法,其特征在于,针对数据输入接口进行接口定义,以标记敏感信息字段,还包括:
针对JAVA的面向对象编程,在参数类和/或数据库操作的Java Bean类的所述敏感信息字段上添加敏感字段注解。
6.根据权利要求5所述的方法,其特征在于,从所述数据输入接口提取所述接口定义的敏感信息值,还包括:
针对JAVA的面向对象编程,在应用中添加AOP切面,从而对输入的服务接口参数,将带有所述敏感字段注解的所述敏感信息字段的值存放到所述线程变量存储器,和/或,针对数据库操作的Repository类的方法,对方法返回值中的实体Bean将带有所述敏感字段注解的所述敏感信息字段的值存放到所述线程变量存储器。
7.根据权利要求1所述的方法,其特征在于,针对数据输入接口进行接口定义,以标记敏感信息字段,还包括:
针对C语言的结构化编程,定义最外层接口输入的参数结构体和/或数据库接口层宿主变量结构体,同时申明结构体中涉及敏感信息的起止偏移量静态数组。
8.根据权利要求7所述的方法,其特征在于,从所述数据输入接口提取所述接口定义的敏感信息值,还包括:
针对C结构化编程语言,在获得参数或数据库数组变量的值的同时,根据所述敏感信息的起止偏移量静态数组提取敏感信息值,并写入所述线程变量存储器。
9.根据权利要求1所述的方法,其特征在于,调用日志打印封装接口查询所述线程变量存储器,若日志消息中存在所述敏感信息值则对所述日志消息进行打码后安全输出,包括:
依次查找日志消息中是否存在所述线程变量存储器中的敏感信息值,若存在,则对所述日志消息中对应于所述敏感信息值的输入参数数值进行打码处理,以输出新数值串;
采用所述新数值串并调用标准开发库或第三方日志框架进行安全输出。
10.根据权利要求1所述的方法,其特征在于,还包括:
当日志打印级别低于设定级别时,直接调用标准开发库或第三方日志框架进行输出。
11.一种应用日志打码输出装置,其特征在于,包括:
接口定义与标记组件,用于针对数据输入接口进行接口定义,以标记敏感信息字段;
标记变量提取组件,用于从数据输入接口提取所述标记的所述敏感信息字段对应的敏感信息值,并写入所述线程变量存储器;
日志打印封装组件,用于当需要打印日志时,调用日志打印封装接口查询所述线程变量存储器,若待打印的日志消息中存在所述敏感信息值,则对所述日志消息进行打码后安全输出。
12.根据权利要求11所述的装置,其特征在于,还包括:
线程变量管理组件,用于创建线程变量存储器以保存当前线程的敏感信息值列表。
13.根据权利要求11所述的装置,其特征在于,所述数据输入接口包括:服务接口和/或数据库接口。
14.根据权利要求12所述的装置,其特征在于,所述线程变量管理组件,还用于:
在当前线程执行的请求处理完成之后,清除所述线程变量存储器中的当前线程的敏感信息值列表。
15.根据权利要求11所述的装置,其特征在于,所述接口定义与标记组件,还用于:
针对JAVA的面向对象编程,在参数类和/或数据库操作的Java Bean类的所述敏感信息字段上添加敏感字段注解。
16.根据权利要求15所述的装置,其特征在于,所述标记变量提取组件,还用于:
针对JAVA的面向对象编程,在应用中添加AOP切面,从而对输入的服务接口参数,将带有所述敏感字段注解的所述敏感信息字段的值存放到所述线程变量存储器,和/或,针对数据库操作的Repository类的方法,对方法返回值中的实体Bean将带有所述敏感字段注解的所述敏感信息字段的值存放到所述线程变量存储器。
17.根据权利要求11所述的装置,其特征在于,所述接口定义与标记组件,还用于:
针对C语言的结构化编程,定义最外层接口输入的参数结构体和/或数据库接口层宿主变量结构体,同时申明结构体中涉及敏感信息的起止偏移量静态数组。
18.根据权利要求17所述的装置,其特征在于,所述标记变量提取组件,还用于:
针对C结构化编程语言,在获得参数或数据库数组变量的值的同时,根据所述敏感信息的起止偏移量静态数组提取敏感信息值,并写入所述线程变量存储器。
19.根据权利要求11所述的装置,其特征在于,所述日志打印封装组件,还用于:
依次查找日志消息中是否存在所述线程变量存储器中的敏感信息值,若存在,则对所述日志消息中对应于所述敏感信息值的输入参数数值进行打码处理,以输出新数值串;
采用所述新数值串并调用标准开发库或第三方日志框架进行安全输出。
20.根据权利要求11所述的装置,其特征在于,所述日志打印封装组件,还用于:
当日志打印级别低于设定级别时,直接调用标准开发库或第三方日志框架进行输出。
21.一种应用日志打码输出装置,其特征在于,包括:
至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:如权利要求1-10中任一项所述的方法。
22.一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被多核处理器执行时,使得所述多核处理器执行如权利要求1-10中任一项所述的方法。
CN202110918655.7A 2021-08-11 2021-08-11 一种应用日志的打码输出方法、装置及计算机可读存储介质 Active CN113704819B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110918655.7A CN113704819B (zh) 2021-08-11 2021-08-11 一种应用日志的打码输出方法、装置及计算机可读存储介质
PCT/CN2022/074660 WO2023015852A1 (zh) 2021-08-11 2022-01-28 一种应用日志的打码输出方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110918655.7A CN113704819B (zh) 2021-08-11 2021-08-11 一种应用日志的打码输出方法、装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN113704819A true CN113704819A (zh) 2021-11-26
CN113704819B CN113704819B (zh) 2024-02-02

Family

ID=78652295

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110918655.7A Active CN113704819B (zh) 2021-08-11 2021-08-11 一种应用日志的打码输出方法、装置及计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN113704819B (zh)
WO (1) WO2023015852A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023015852A1 (zh) * 2021-08-11 2023-02-16 中国银联股份有限公司 一种应用日志的打码输出方法、装置及计算机可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109726590A (zh) * 2018-12-24 2019-05-07 平安普惠企业管理有限公司 系统日志脱敏方法、脱敏系统、计算机设备及存储介质
WO2019114766A1 (zh) * 2017-12-14 2019-06-20 中兴通讯股份有限公司 一种数据脱敏方法、服务器、终端及计算机可读存储介质
CN110688662A (zh) * 2019-09-16 2020-01-14 威富通科技有限公司 一种敏感数据脱敏及逆脱敏方法、电子设备
US20200285772A1 (en) * 2019-03-06 2020-09-10 International Business Machines Corporation Detecting sensitive data exposure via logging
CN112286706A (zh) * 2020-12-25 2021-01-29 北京邮电大学 安卓应用的应用信息远程快速获取方法及相关设备
CN112306431A (zh) * 2020-11-03 2021-02-02 平安普惠企业管理有限公司 日志信息打印方法、装置、设备及存储介质
CN112685777A (zh) * 2020-12-30 2021-04-20 平安普惠企业管理有限公司 信息脱敏的方法、装置、计算机设备及介质
CN113221182A (zh) * 2021-06-10 2021-08-06 中国银行股份有限公司 银行日志脱敏方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110414261B (zh) * 2019-06-26 2022-04-26 北京三快在线科技有限公司 一种数据脱敏方法、装置、设备及可读存储介质
CN111339559A (zh) * 2020-02-25 2020-06-26 北京同邦卓益科技有限公司 一种日志脱敏的数据处理方法及装置
CN111737746A (zh) * 2020-06-24 2020-10-02 四川长虹电器股份有限公司 一种基于java注解的动态配置数据脱敏的方法
CN113157659A (zh) * 2021-05-14 2021-07-23 中国建设银行股份有限公司 一种日志处理方法和装置
CN113704819B (zh) * 2021-08-11 2024-02-02 中国银联股份有限公司 一种应用日志的打码输出方法、装置及计算机可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019114766A1 (zh) * 2017-12-14 2019-06-20 中兴通讯股份有限公司 一种数据脱敏方法、服务器、终端及计算机可读存储介质
CN109726590A (zh) * 2018-12-24 2019-05-07 平安普惠企业管理有限公司 系统日志脱敏方法、脱敏系统、计算机设备及存储介质
US20200285772A1 (en) * 2019-03-06 2020-09-10 International Business Machines Corporation Detecting sensitive data exposure via logging
CN110688662A (zh) * 2019-09-16 2020-01-14 威富通科技有限公司 一种敏感数据脱敏及逆脱敏方法、电子设备
CN112306431A (zh) * 2020-11-03 2021-02-02 平安普惠企业管理有限公司 日志信息打印方法、装置、设备及存储介质
CN112286706A (zh) * 2020-12-25 2021-01-29 北京邮电大学 安卓应用的应用信息远程快速获取方法及相关设备
CN112685777A (zh) * 2020-12-30 2021-04-20 平安普惠企业管理有限公司 信息脱敏的方法、装置、计算机设备及介质
CN113221182A (zh) * 2021-06-10 2021-08-06 中国银行股份有限公司 银行日志脱敏方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023015852A1 (zh) * 2021-08-11 2023-02-16 中国银联股份有限公司 一种应用日志的打码输出方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
WO2023015852A1 (zh) 2023-02-16
CN113704819B (zh) 2024-02-02

Similar Documents

Publication Publication Date Title
CN106919434B (zh) 一种代码生成方法及装置
US8533669B2 (en) Analysis of dynamic elements in bounded time
CN110688307B (zh) JavaScript代码检测方法、装置、设备和存储介质
CN110704064B (zh) 编译和执行智能合约的方法及装置
CN112130837A (zh) 一种代码处理方法、装置及存储介质
JP2001526421A (ja) 異なるフレームワークバージョンで作成されたオブジェクト指向プログラムが通信することを可能にする装置および方法
CN112817657B (zh) 一种应用程序启动项加载方法、装置、系统及存储介质
CN112540862A (zh) 一种接口文档数据生成方法、装置、设备及存储介质
CN112187713B (zh) 报文转换的方法、装置、计算机设备和存储介质
CN113704819A (zh) 一种应用日志的打码输出方法、装置及计算机可读存储介质
CN111240772A (zh) 一种基于区块链的数据处理方法、装置及存储介质
CN109324792B (zh) 一种基于编程语言的路由构建自动化方法及电子设备
CN111475150B (zh) 一种跨语言绑定方法、装置、设备及存储介质
CN109032572B (zh) 一种基于字节码的java程序方法内联的方法
US9405739B1 (en) Source code format for IDE code development with embedded objects
CN112114810A (zh) 编译处理方法及装置
CN111444456B (zh) 一种样式编辑方法、装置及电子设备
CN114490848A (zh) 文件解析处理方法、装置、存储介质以及电子设备
CN109308256B (zh) 一种java程序动态分析方法、设备和存储介质
CN107451050B (zh) 函数获取方法和装置、服务器
CN110990050B (zh) 一种模型类属性值打印控制方法、装置、介质和设备
CN117270962B (zh) 一种处理着色语言的方法、装置、存储介质及电子设备
CN113312038B (zh) 一种生成Java代码类继承结构的实现方法
CN114115861A (zh) 一种基于自定义组件的前端页面生成方法、装置及系统
CN115796190A (zh) 基于vue和webpack的前端国际化多语言转换方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant