主题:【请教】请教各位一个SQL Server的安全问题 -- 懒厨
前两年帮一个朋友业余做了套软件,经过两年来的慢慢完善,朋友很喜欢,想跟我合伙去卖。问题是两年前做的时候没想过要卖,贪方便,数据库就选了MSDE (SQL Server 2000的免费版)
现在想卖,不得不考虑一下安全问题了,主要是想防盗版。因为无法控制用户的服务器,用户随便装一个Enterprise Manager,整个Schema(数据结构?)就让人看得清清楚楚了。
退而求其次,既然Schema没法防,就把Views & Stored Procs加密,聊胜于无吧。结果放狗一查,一大堆源码帮你解密。
请问各位有何高招呢?
你对这个产品的预期是多少(这个产品的生命周期里能为你挣多少钱),然后再算算你可以为了防盗版投入多少。最后再考虑主要的销售市场实际情况,来决定需要什么样的技术和法律手段。
表名从t1到tn
字段从f1到fn
见过有这么做的。就是开发维护的时候要看数据字典手册,另外把数据存取层与商业逻辑实体层分开能减少依赖。
每年能卖十个八个用户,就很高兴了,纯粹是副业,挣点零用钱罢了,所以一定是低成本的方案。
最近大概能卖出第一套吧,还在做测试,想到这个问题,这才有此一问。
不过,如果卖得好,我倒是舍得花点钱把数据库搞得尽可能安全的。
全部改过来,太辛苦了。
另外,以后做维护,难度也高了点。
占领市场,然后在下一版本里仔细考虑防盗版。
现在的打算就是分两步走。
第一步是做一个简单的MAC Address加密,只能在固定的服务器上运行,防止拷贝,这一步已经搞定了。
第二步打算把数据库加密,如果能卖多几个客户,有点本钱的话,看看能不能找个什么加密软件至少锁住Views & Stored Procs。
我也觉得那是在版权以外的一个比较可行的办法了。表名、字段名在交出去的时候,全改成没意义的随机字符串。程序里面也做那样的改动,包括函数名,变量名等等。
比如 var_thisvar 变成 md5("var_thisvar")这样。估计即使有人拿到你的源代码,也不会有人愿意看。
主要是维护起来太复杂,全文替换难度比较大的,都在数据库里面,而且全文替换之后还得全部重新测试,我可是光杆司令啊。
比如interbase,单文件数据库,但是它的性能很好,不输给SQL Server,而且因为是单文件数据库可以更改附加名。你把文件名改成DLL混在其它DLL一起看他能认出来就怪了,更不用说破解数据库的密码。不过问题是,听说interbase容易在意外断电情况下丢失数据并且不容易恢复。
看你程序写的怎么样了,如果都是通用SQL那么在数据库连接的地方改一个连接指向Interbase就行了。但是如果用了SELECT TOP(10) FROM 。。。。呵呵,那您自个看着办吧。
查了一下,每加一个用户要两百多块钱,但是我的客户通常有5-10个用户,这么一算,成本就上去了,也不知用户肯不肯。。。
好像不支持数据库的加密吧,象InterBase那种,或者至少是把Views & Store Procs加密。
可惜了,FireBird真是好东西,不象MSDE那样,只支持2G的数据库。