Office中国论坛/Access中国论坛

标题: 也谈Access的安全性问题——关于roych和十段隐藏表问题的讨论 [打印本页]

作者: 红尘如烟    时间: 2011-1-17 17:58
标题: 也谈Access的安全性问题——关于roych和十段隐藏表问题的讨论
本帖最后由 红尘如烟 于 2011-1-18 13:54 编辑

之前关于roych和十段的激烈讨论,导致不少围观群众被拉下水,我本着强帖留名的原则冒了个泡,结果被老汉严肃批评了打酱油的行为,看来不说两句就对不起国家对不起党了……

那就说两句好了,我的观点是:
    安全是相对的(这个地球人都知道),从技术层面讲,只要破解成本大于非法所得,我们就可以认为是安全的,但是安不安全更多的是对人的管理,而不能把什么事都推给计算机去解决,计算机只是一个工具,不是万能的上帝。就比如银行账号密码,这个基本上通过直接破解银行系统可能性非常之低,因为难度非常之大。那么为什么还是经常有被盗用的情况发生?因为使用人的习惯,很多人为了省事,把很多的账号密码记在纸上,甚至有人直接把密码写在银行卡上,这样银行卡一旦丢了,意味着什么不用我说了吧?

Access的的应用,最多的是个人和部门级的应用,当然也有一些规模不太大的企业级应用。而在实际应用当中,安全问题主要分为两种情况:

    一种是数据的完整性和有效性,比如用于初始化的删除查询,这种一般是将所有的表清空,那么应该对它的使用进行严格控制,否则如果程序被不小心执行了,而你又很长时间没有备份,那么你就悲剧了,上次备份以来的数据全都重新录入吧(我刚接触Access那会就干过这样的事,结果一周的数据全都要重新录入)。类似的还有财务上的统计数据。所以要保证数据不出问题,最厉害的绝招就是备份,就算被人恶意把数据删除了,但哥昨天是备份了的,顶多把今天的数据重新录入一遍,谁怕谁!

    另一种情况是对敏感数据的保护,而所谓敏感数据无非就是密码以及一些比较重要的统计报表之类的数据。对于密码,一般用MD5之类的不可逆加密即可,如果不小心忘记了,可以将其实重新设置为一个初始密码。这样就除了设置密码的人,其它人就算是管理员也不能知道密码原文,这样至少对于密码原文来说,要比使用可逆加密安全多了。因为很多人有多个账号使用同一个密码的习惯,所以被人知道了密码原文就意味着那些账号全部都不安全了。

    对于统计报表之类的敏感数据,最有效的方式就是使用不同的客户端程序,对于没有权限的用户根本就不给他提供可用的敏感数据相关模块。这样做虽然在客户端分发时相对稍微麻烦点,但我想还是要比使用同样的客户端,然后绞尽脑汁去想办法不让没有权限的用户使用对应的模块要容易的多,毕竟在Access中窗体报表相对容易控制,但表和查询是很难控制的,而统计报表一般是基于查询的。如果只是能看到表中的数据,其实问题不是太大,因为有用的只是最后得出的统计结果,就算是对Access开发再熟悉,如果不是你开发的,那么你要看懂别人的表是怎么一个结构什么的,是要花不少时间的。然后还得想办法去自己统计查询,这个成本可就上去了。

    另外不得不提到的一个情况,就是在设计时的对象命名,虽然我很不赞同和习惯使用拼音简写来命名,因为这样可读性太差,但任何事情都有两面性,正因为可读性差,所以在安全性上面来说就有好处。在最终的正式版中,删除掉所有的字段标题,说明之类的属性内容。甚至再邪恶一点加几个乱七八糟的无用字段在里面,平时保存修改数据的时候再保存一些看似有用的数据。嘿嘿,没有说明书,不知道查询是怎么写的,不知道实现思路,想要得到有用的重要数据,小样你就慢慢去琢磨吧……
   
    所以说到底,计算机、软件之类的东东,只是起辅助作用,一切还是要以人为本,再先进的软件,不能和管理结合,就算牛上天了也没用。因此使用Access,重点还是要放在业务数据的处理上面,如何更好的辅助工作,提高工作效率。我见过的好几家规模在亿元以上的公司,用的用友之类的软件,数据库连密码都不设,说起来好像非常不安全,实际上呢,也没见人家用着有什么问题。企业中对Access比较了解或者精通的人可能只有百分之一,而这百分之一的人中,会对公司的软件系统进行恶意破解或破坏的人不到百分之一。因此,安全神马都是浮云,差不多够用就行,不能把那万分之一不到的机率无限放大,钻进牛角尖去了。


作者: todaynew    时间: 2011-1-17 18:43
“企业中对Access比较了解或者精通的人可能只有百分之一,而这百分之一的人中,会对公司的软件系统进行恶意破解或破坏的人不到百分之一。”
这个假设成立。很多设计等级很高的安全防范措施,通常情况下用不上。还是那句俗话,锁君子不锁小人。
作者: tmtony    时间: 2011-1-18 13:51
有道理,也围观一下
作者: zhuyiwen    时间: 2011-1-18 22:01
冒个泡。

要想相对比较安全,最好是数据库引擎都是自己写的。不过就算是这样,也有人能破解,呵呵……

作者: aslxt    时间: 2011-1-18 22:44
非常赞同版主的意见,绝对的【安全】是没有的。
作者: t小宝    时间: 2011-1-19 11:11
说的在理,我以前有的库设了密码,现在都忘记了,还要用破解工具来打开
作者: yinxiaobao    时间: 2013-12-1 11:32
在局域网谁破解你的密码,吃饱了撑着没事干.拿点时间多学点东西多好.
作者: ganlinlao    时间: 2013-12-1 15:16
比较理想的是三层结构的方式。
这个问题早在N年前就被讨论过了。
如果我连mdw文件都不给你,你拿什么来破解?
三层结构的优点是:
可拓展性强。层次分明。易于维护
缺点:
代码量多一些。
作者: jasonjiang9999    时间: 2013-12-1 15:33
access的安全性问题在于
1. 内置安全性手段少
2. 介绍access安全性的文档文章少,新手学习起来困难.
加上大部分开发access的都是处于编程的入门阶段.
所以说access开发出来的应用安全性是个问题.  熟悉所有安全措施的人..大部分都不用access开发需要很高安全性的东西.




作者: ycxchen    时间: 2013-12-2 09:31
如何保护计算查询?
作者: leonshi    时间: 2013-12-2 09:44
如果你用access的设计的查询的话,想完全保证安全基本不可能,除非你把前台程序运行和后台分开。
作者: ycxchen    时间: 2013-12-2 15:19
如果是单机,在每一个窗体的加载事件中写入隐藏查询代码,这样,只要ACCESS运行,查询会隐藏了。关键是隐藏查询的代码如何写呢?
作者: pgwxy    时间: 2015-1-11 00:21
t小宝 发表于 2011-1-19 11:11
说的在理,我以前有的库设了密码,现在都忘记了,还要用破解工具来打开

道理不深但却十分在理,高手也这么认为多少打消了自己的一点担忧。
作者: purplerose    时间: 2015-7-24 22:47
安全性防范措施是应该的,如想不被破解,可能性不大,否则哪来的黑客呀{:soso_e120:}
作者: ak47ok    时间: 2015-11-28 12:55
每次回帖、谢谢!辛苦了。
作者: purplerose    时间: 2015-11-28 20:24
还是todaynew说得对 锁君子不锁小人。有时加密了,自已都解不开,何苦呀,如果想不让别人看到代码,就用别的语言来写了




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3