您的位置:首页 > 其它

[讨论]数据安全保障手段

2009-07-25 13:31 281 查看
数据的安全性不言而喻。我所服务的公司就对数据的安全非常的重视。

但是今天我想讨论的数据安全是狭义的,指的是即使将数据库服务器部署在客户机房也要保障数据只有开发商才有权访问,除些之外包括Cracker、甚至客户都无权访问。相信这种需要有的朋友可能碰到过。

注:这里我不想讨论数据的所有权到底应该归谁,及开发商是否有权垄断数据。作为技术人员我只想讨论当这种需求出现时我们应该如何实现。

当我第一次面对这种需求时,我采用了数据库字段级别的加密。相信这也是很多朋友的第一反应。因为程序已经编写完成,我不想在动源代码了。所以将加密算法写在数据库自定义函数中,然后修改所有SQL语句。这样做的代价应该是最小的,不用对整个程序全面测试就可以放心使用。但很被Cracked。

因为公司所做的项目是基础数据的管理系统,所以其他公司再进入这一市场时必须要获得基础数据。被C的机会就很大。

第二次,我将加密算法封装在DLL中。很遗憾,被C的速度更快。因为编写的数据导出程序只要调用这个DLL就可以了。

总结以上两次的失败经验,发现了一个问题,就是以前基于数据库字段级加密的手段都没有识别调用者。也就是说数据虽然加密了,但Cracker根本没有费力Crack算法,而是使用使用已经存在解密组件。

所以,这次我准备彻底一点。当然,仍然无法绝对避免被C,但安全性应该提高了一档次。

方案:



采用Firebird的原因是:一方面工作平台主要集中在Windows上面,虽然Firebird也可以工作在Linux平台之上,但针对Windows有相应的优化。另外,Firebird相对其它数据库(MySQL、PostgreSQL...)要简单一样。

数据库文件整体加密是为了防止拷贝附加操作;
连接组件的限制是防止通过其他手段连接数据库,比如我们改造了ADO连接方式,但还可能通过ODBC等多种手段连入数据库;
改造连接组件是防止其他应用程序使用这个连接组件。

目前,这是初步想法,连技术准备还没有做好。放上来和大家讨论,欢迎加入。

另外,Firebird在海量数据处理方面表现怎么样现在还不清楚,如果有了解的朋友欢迎加入讨论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: