积分就使用int类型就行了,多加一个字段存储 积分+保密值 的MD5这样就算被人在数据库中修改了,也能查到,不过 保密值 比较重要

解决方案 »

  1.   

    可以自己设计加密函数,封装成dll。在插入数据之前先利用加密函数将积分加密,然后再入库,取出来的过程反之。这样可以保证系统管理员不能利用职务之便获得积分信息。
    但是,管理员如果对系统非常熟悉或者监管不严,还是可以获得dll自己实现加密解密功能的。
      

  2.   

    比如说数据库管理员就可以把自己的积分调成跟其它高级用户一样====那么,你说 某个银行保险库的密码 是否连金库管理员 都无法知道呢?
    这是一个防范“监守自盗”的问题,技术角度上无论如何都不可能完全做到,需要一定的行政规范,你不会随便将金库钥匙给任何人吧?从系统设计上看,
    对于涉及安全、保密的操作,每个操作都应该有相关的详细日志记录,何时何地何人做了什么样的操作,以及可重做策略如何设计
    这样可以某种成都上,对操作员的操作作出约束,当然,对于 HACK 级别的“闯入者”,他也有办法绕过你的监督机制,比如你用了触发器,他肯定想方设法的绕过取,因此,技术上能够解决安全性通常的对象是本系统之外或者非专业的人员的“异想天开”的“行为”作为,系统管理员/DBA,你赋予了他进入系统/数据库的权限,他当然有可能作出任何不守业务规则的行为,这似乎不是技术角度能够完全防范到的具体的实施方案,也不了解,找从事相关行业的朋友了解下吧,
      

  3.   

    跟据上面的讨论看来,我应该在如何生操作成日志的问题上下功夫了,这才是正确的方向。请问有没有具体化的方案,自己想的话难免会有疏漏,大家多提提方案。比如说kingwkb提到的保密值,应该是个不错的方案,但是保密值也有可能被改,最好还有其它补充措施。
      

  4.   

    保存数据库的操作日志就可以,默认情况下sqlserver是保存操作日志的,你可以在sqlserver的系统管理界面中查看日志。
      

  5.   

    一般这种东西都是,服务器SSL配置,然后给客户端颁发数字证书
    懂电子商务的人都知道,颁发证书,是比较有效的安全控制方式
    再者就是从管理上下工夫,跟技术无关
      

  6.   

    1.同意楼上 Jinglecat(晓风残月 >> 问题需简洁,错误要详细) 说的,你要防止监守自盗的话,应该在系统设计上做到对管理员的严格管理和跟踪,就如银行的职员出出入入都要刷卡都要log,什么时候钱被偷了,看看log那个时段谁进出过就知道了,这么明显的保安机制银行职员显然不会蠢到想要偷钱,至少想偷都想个更高明的办法吧。2.如果你真的想知道电子钞票是怎么做的,你最好自己去看信息安全有关的书籍和理论,有问题最好也到安全有关的板块问,因为那是很复杂的事情,当然它可以保证1元就是1元,没有密钥你无法凭空创造1元出来,同一个1元也无法复制或者重复消费。
      

  7.   

    #region 加密帐号静态方法
        public static string Mask_MakePassword(string Password)
        {
            return (ToEncrypt(Password, 1));
        }    public static string Mask_GetPassword(string Password)
        {
            return (ToDecrypt(Password, 1));
        }
        #endregion 加密帐号静态方法    #region 加密设置
        private static string ToEncrypt(string StringSource, int IndexInKeys)
        {
            if (StringSource == null)
                return "";
            UrlComm mc = new UrlComm();
            return (mc.Encrypt(StringSource, IndexInKeys));
        }    private static string ToDecrypt(string StringSource, int IndexInKeys)
        {
            if (StringSource == null)
                return "";        UrlComm mc = new UrlComm();
            return (mc.Decrypt(StringSource, IndexInKeys));
        }    #endregion 加密设置