详细介绍:致远oa运维看过来,审计知道了一定会大呼你们竟然还这样干
前言:
本文只是介绍一种工作思路,起初作者申明并非有教唆之意。先说说作者实际工作中遇到的场景:某天公司小李走了个 oa 流程,本来要上传一份重要的内部合同文稿,只是一不小心远成了自己创作的某部小说,又把流程发送出去了,不得不说世界是个草台班子,该合同一句顺畅(由于合同文稿早就线下沟通过,oa 只是走个流程留痕),直到盖章用印环节,用印的同事打开文稿傻眼了。然后小李同志哭丧着脸找到作者,看能否把附件替换掉。当然作者义正言辞的拒绝的,这种运行是违背职业操守的。但架不住小姑凉梨花带雨,作者又是个怜香惜玉的主,于是答应了帮她处理。
解决方法:
一、管理员权限是否能在前端对附件运行?
通过这里能够直接回答读者,致远没有提供这个功能,管理员的账号只能进行系统配置操作,流程节点调整。在 9.0 以上版本的,不需要专门的 admin1 账号登陆来进行管理员。

二、能否凭借服务器后台来做附件的替换操作?
1. 查找附件资料所在目录
通过在后服务器后台中流程附件都是存储在文件目录中,不是存储在数据库中,那是否找到对应的档案把他用新的文件去替换掉就能够了,作者的结论是,这个思路是可行的,也是解决这个问题作者推荐的方案。附件是以年/月/日 层级的形式做存储,知道流程发起的时间那就能够知道附件存储所在的目录,下一步就是要具体找到是哪个附件记录。

2. 目录下文件为加密形式
打开一个目录,发现文件的名称都是一串数字的形式,而且有些前面还有-,也就是说从文件名上是看不出来是哪个流程对应的附件的。而且按照经验这种形式的材料大概率都是加密的,是无法简便通过修改文件名后缀来还原出附件材料。 这个在文章的后面作者将做验证
为了测试,作者先在一个流程中上传了个附件abcd.docx为例,材料内容就是1234567。

3. 数据库查询找到具体记录
我们需要在数据库中查找两个附件对应的存储在服务器上对应的名称。以abcd.docx这个材料为例。致远OA的附件记录在ctp_attachment 这个表中
SELECT * FROM ctp_attachment where FILENAME = 'abcd.docx'
从返回的查询内容中,预估File_url 字段存储了服务器上附件的名称,登录服务器做验证。

服务器上存在该资料。

4. 记录为加密形式的猜想验证
拿到了存储的,就可以验证下作者之前的猜想,该文件应该是加密的,无法借助容易的修改记录后缀名还原出材料。拷贝一份记录,直接修改文件名为原来的文档名称 abcd.docx, 用word打开发现里面内容是乱码的。

那就证明文件是加密的,不知道文件的加密算法,貌似这个事情是走到了死胡同。把这个问题咨询了OA的服务人员,答复是致远提供的S1器具有附件加解密的功能。但作者查了官方对S1工具的介绍其中有一条。
原厂增值服务:表单信息清理、异常待办置已办、指定材料清理、公文正文/附件替换、流程强制撤销、公文文号修改、公文数据清理
5. 如何解决文件为加密的问题的思路
可行的,那又如何把正确的记录加密呢?作者又再次灵感一显,找个地方把正确文件上传到OA上不就自动又加密的资料了。马上来进行验证。就是供应公文正文附件替换,从中可以看出是仅限公文,而且是应该原厂增值服务,也就是说需要加钱才可能。显然与本文的出发点是不同的。作为一个IT人,眼看问题就要解决了,哪能到此就放弃了。突然作者灵感一显,既然不知道你加密的过程,那是否可以把正确的档案进行加密,然后覆盖以前的文件呢,看附件表中是没有记录文件md5之类的唯一性信息的,那么大概率也没有针对文件篡改的判断。理论上这个思路
6. 方法的验证
重新创建了一个新文档abcd-new.docx ,材料内容修改为7654321,上传到OA中。

查询数据库,找到该附件的存储文件。


复制一份-3572700092568744900把文件名修改为480710232076471226,再覆盖。到此操作完成,再到OA前台页面去看效果来验证。

文件内容已经变更abcd-new的了,表明替换成功!!
总结:
本文主要讲述了一种可行的替换致远OA流程中附件的方法,为什么标题说审计人员会惊呼,那这个就要读者们自己去体会了,仁者见仁智者见智了。但是本文还是要强调下各位系统管理员还是要职业操守,什么时候能做这些操作自己心里要有个谱,否则也有可能喜提银镯子。另外如果是后续版本致远OA启用了附件md5校验等方式保证文件一致性,此种方式就不一定能成功了。

浙公网安备 33010602011771号