dp2系统提高安全性 数据传输的加密和隐藏功能 - DigitalPlatform/dp2 GitHub Wiki
新版本的dp2系统可以对数据传输过程进行加密设置,也可以根据需要配置传输部分读者信息数据,或者在某些场景下让界面上不显示某些需要隐藏的信息。
1.dp2library与dp2内务/opac之间数据传输过程中的加密
通过购买配置https协议的数字加密证书,可以对 dp2library与dp2内务/opac之间数据传输过程进行加密。这样即使黑客获取了传输的数据,但也无法立即破解,因为数据是加密传输的。
2.对馆员获得/修改读者信息的权限进行分级设置。
读者的所有信息都存储在dp2library服务器上,新版本下,当前端向服务器发送指令要想获取读者信息时,服务器向前端传送读者记录的哪些字段,是由发送指令的账号的获取读者记录权限来决定的。也就是说,如果这个馆员只具有获得姓名的权限,那么服务器就只传送姓名到前端。这样就彻底避免了传送多余的信息所带来的可能的信息泄露。
馆员账户权限分级设置,意思是对馆员获取读者信息或者修改读者信息的权限分级设置。配置了获得/修改读者信息某个级别的权限之后,馆员就只能从服务器获得权限范围内所对应的读者记录字段。如果级别较低,馆员就只能获得部分允许的内容,无法看到完整的内容,也无法修改允许范围之外的读者信息字段。
详细配置请参考文档。
3.自助借还前端系统读者识别信息隐藏设置
由于自助借还前端目前必须依靠读者证条码号来识别读者记录,所以如果如果希望前端不显示完整的读者证条码号,只能在前端界面上进行隐藏。
详细设置参见文档
4.公众号前端读者信息隐藏设置
对于公众号来说,为了安全的需要,新版本系统将公众号内部运行的capo的权限分到了三个账号当中:capo、weixin_wx_registerByPatron、wx_changeTelByPatron。其中capo账号只有4个基础权限:bindpatron(绑定读者账号),simulatereader(模拟读者登录),simulateworker(模拟工作人员登录),getSystemParameter(获得系统能够参数)。 如果服务器上配置了密码有效期限,为了使capo的密码不被强制重置,还需要配置neverexpire权限。
注:公众号里绑定读者账号时,capo绑定账号时,不需要获得读者信息,而是capo直接将读者输入的信息发送给dp2library服务器,由dp2library服务器进行绑定;simulatereader和simulateworker两个权限,是capo作为系统中的代理账号,在“代替”读者或馆员做事时所需要的权限,这个权限处理过程中如果用到密码,capo是不知道的,只能由读者或者馆员自己来输入(就像到银行柜台存取款时,工作人员要用一个账号在系统里面操作,遇到输密码的时候由用户自己输入)。capo的主要用途就是绑定账号和找回密码。
weixin_wx_registerByPatron是专门用来获得或者修改读者记录中除了手机号码以外的其他信息的代理账号,需要包含的权限有:getreaderinfo:name|gender|department|tel|comment|barcode|state|readerType|refID|libraryCode,setreaderinfo:name|gender|department|tel|comment|barcode|state|readerType|refID|libraryCode|r_delete,如果服务器上配置了密码有效期限,为了使capo的密码不被强制重置,还需要配置neverexpire权限
wx_changeTelByPatron是专门用来获得或者设置读者手机号码的账号(因为读者的手机号码属于个人隐私,所以单独用一个账号来代理操作),需要具备的权限有:getreaderinfo:name|tel,setreaderinfo:tel,如果服务器上配置了密码有效期限,为了使capo的密码不被强制重置,还需要配置nneverexpire权限
个人认为如果图书馆不需要开通公众号注册读者账号的功能,公众号只有一个仅仅具备4个权限的capo账号就够了,不需要另设weixin_wx_registerByPatron、wx_changeTelByPatron
A. 限定一个读者账号只能只和一个手机微信号绑定的配置
在公众号后台libcfg.xmlibcfg.xml中,对应的图书馆栏,增加bindStyle=”singlestrict”
。配置后回收公众号应用池。
这样读者账号在第二个微信绑定时,系统提示绑定失败,类型"weixinid"先前已经被绑定过了
。
B.公众号前端发送给读者的信息中隐藏证条码号与读者姓名
在公众号后台libcfg.xmlibcfg.xml中,对应的图书馆栏,增加patronMaskValue=""barcode:3|4,name:1|0"
。配置后回收公众号应用池
这个参数是针对capo发送给公众号的消息,显示到公众号时所做的过滤。capo作为中间的桥梁,在给公众号发送消息(比如借还消息,绑定消息等)的时候原则上是原封不动地发送,不会做出任何隐藏或者修改,就像服务器记录日志一样客观。这种记录和任何账号的权限无关,是capo的基本功能。
公众号配置patronMaskValue参数后,就可以对公众号发送给读者信息进行隐藏。以上配置表示证条码号只显示左边3位和右边4位,中间的内容隐藏;姓名也不全显示,只显示左边1位和右边0位(即指显示左边第一个字)。
配置以上参数后,公众号绑定馆员账号后,馆员收到的读者借还消息仍然是完整信息,不会隐藏相关的姓名和增条码号。
为何公众号从服务器获得信息的时候必须获得证条码,姓名的全部内容,不能在传送前就过滤部分内容,待进一步讨论。
C.读者绑定公众号后,隐藏显示个人部分信息
读者绑定公众号后,绑定账号界面和个人消息界面所显示的内容,与读者个人的账号权限有关。可以通过给reader账户或者读者个人的权限字段进行限制,来选择需要显示的内容,隐藏其他内容。
读者绑定公众号后,显示信息到公众号界面的过程:capo先将完整的读者信息存入公众号本地库,然后再由读者账号去获取信息,并显示到界面。如果读者账号去获取信息时权限较大,可以获得全部信息,显示到公众号的姓名或证条码等就比较完整;如果当时读者权限较低,只能获得姓,不能获得名,那么显示到公众号前端的就只有姓没有名。