开发者社区> 问答> 正文

数据库方面的面试题,求解答 - 数据库报错

"

刚看见这上面有人问面试题怎么回答,我也想到前几天的一个特别没思路的面试题。求各位前辈老师解答。

一张数据库表上有着十分机密的用户账号和密码信息。

要怎么防止数据库管理员得到用户的信息。

不考虑数据库权限、不考虑加密、不考虑数据库类型、不考虑程序控制。

差不多就是这样吧,上边的【不考虑】是我回答过的,面试官说管理员可以登录修改用户密码和然后就可以登录了。

"

展开
收起
montos 2020-06-04 15:18:18 1816 0
2 条回答
写回答
取消 提交回答
  • "三个字,不可能######回复 <a href=""http://my.oschina.net/hanke"" class=""referer"" target=""_blank"">@DanceCoder : 没有这种数据库管理员,如果是系统里的管理员,倒是可以通过系统代码,实现管理员只能管理不能查看的逻辑。数据库本身的管理员不行,除非让数据库管理员都进不了数据库,那还管理啥。######回复 <a href=""http://my.oschina.net/visualgui823"" class=""referer"" target=""_blank"">@乌龟壳 : 面试官说可以执行增删改查,就是直接在控制台执行SQL语句的那种。######回复 <a href=""http://my.oschina.net/hanke"" class=""referer"" target=""_blank"">@HankeBoom : 如果有背景就可能不一样,比如说的其实是所谓的数据库管理员之类的,就看看服务器状态那些,数据库都没权限进去######哈哈哈,面试官好坏。。。。。######你确认他不是在出脑筋急转弯?
    ######不知道,根据我仅有的面试经验,一般都是先问一些基础的问题。我也不知道他为什么问这么摸不着头脑的问题。难道是在考察我的解决问题能力?######<span style=""color:#444444;font-family:'Microsoft YaHei', Verdana, sans-serif, 宋体;font-size:14px;line-height:normal;background-color:#FFFFFF;""> 数据库管理员没有权限看数据库,感觉就像厨师不能进厨房一样。######面试官的意思是不要在管理员权限方面限制不同权限级别的管理员######

    在java程序是对用户名和密码进行了加密后存入数据库的,登录的时候时候再提取数据库的数据进行相反的解密过程,如果一致,才通过

    根据你的描述,管理员A又可以管理服务器后台,又可以管理数据库,那只能说明管理员只能为一个(多了就权责不分了),当然最好的是 不要给A日志信息查看权限,要不然就他就可以做到天衣无缝。

    以上是个人对数据安全性的理解

    下面废话:1:不考虑数据库权限、不考虑加密、不考虑数据库类型,说明数据库安全性有问题。2:面试官的回答“登录修改用户密码和然后就可以登录了。” ,有点sb思维,我都看得到密码了,还用修改后台的密码,还要脱裤子放屁(多此一举)

    ######哈哈哈,面试官确实好坏######

    这种东西只有在登录的时候处理吧.

    数据库都是持久性的东西, 不管如何加密. 只要修改成一个我知道的明文加密的数据不就行了?

    所以,还是在登录的后台做处理.

    比如加密的是根据用户输入的密码加上用户名之类的处理过的密码.

    那么数据库管理员不知道后台的处理逻辑, 修改了数据库也无用.

    ######长知识了,谢谢######66666######

    看看是否可以这样做

    用户的相关信息只通过uuid来查询,并且所有信息与用户名无相关性。用户名和uuid的对应关系拆分成多个记录保存,比如用户名abc ,uuid 123-456-789-012-234 保存成加密后的记录

    cde asd

    ghi fdfd

    jkl rrr

    mno !3e

    pqr rwq

    这里第一列是abc加上序号 变成的abc1,abc2...再加密后的字符串,第二列是uuid片段加密后的数据,

    客户端通过多次请求再解密获取完整的uuid,然后获取数据,这样除非管理员能解密否则无法获得完整数据

    ######就是性能堪忧######这个有点厉害啊######

    引用来自“cys1357”的评论

    看看是否可以这样做

    用户的相关信息只通过uuid来查询,并且所有信息与用户名无相关性。用户名和uuid的对应关系拆分成多个记录保存,比如用户名abc ,uuid 123-456-789-012-234 保存成加密后的记录

    cde asd

    ghi fdfd

    jkl rrr

    mno !3e

    pqr rwq

    这里第一列是abc加上序号 变成的abc1,abc2...再加密后的字符串,第二列是uuid片段加密后的数据,

    客户端通过多次请求再解密获取完整的uuid,然后获取数据,这样除非管理员能解密否则无法获得完整数据

    可是都说了不允许加密了,实在想不出不加密怎么办了######你需要了解MySQL的“视图”是干嘛的。。。。。。。######视图不是也可以执行改数据操作吗######

    引用来自“cys1357”的评论

    看看是否可以这样做

    用户的相关信息只通过uuid来查询,并且所有信息与用户名无相关性。用户名和uuid的对应关系拆分成多个记录保存,比如用户名abc ,uuid 123-456-789-012-234 保存成加密后的记录

    cde asd

    ghi fdfd

    jkl rrr

    mno !3e

    pqr rwq

    这里第一列是abc加上序号 变成的abc1,abc2...再加密后的字符串,第二列是uuid片段加密后的数据,

    客户端通过多次请求再解密获取完整的uuid,然后获取数据,这样除非管理员能解密否则无法获得完整数据

    引用来自“钛元素”的评论

    可是都说了不允许加密了,实在想不出不加密怎么办了

    上面的加密只是为了去掉多个片段记录中用户名的相关性,让管理员无法通过搜索找出所有和这个用户名相关的记录项,不需要解密,只是一种变换算法。



    "
    2020-06-04 16:18:47
    赞同 展开评论 打赏
  • "三个字,不可能######回复 <a href=""http://my.oschina.net/hanke"" class=""referer"" target=""_blank"">@DanceCoder : 没有这种数据库管理员,如果是系统里的管理员,倒是可以通过系统代码,实现管理员只能管理不能查看的逻辑。数据库本身的管理员不行,除非让数据库管理员都进不了数据库,那还管理啥。######回复 <a href=""http://my.oschina.net/visualgui823"" class=""referer"" target=""_blank"">@乌龟壳 : 面试官说可以执行增删改查,就是直接在控制台执行SQL语句的那种。######回复 <a href=""http://my.oschina.net/hanke"" class=""referer"" target=""_blank"">@HankeBoom : 如果有背景就可能不一样,比如说的其实是所谓的数据库管理员之类的,就看看服务器状态那些,数据库都没权限进去######哈哈哈,面试官好坏。。。。。######你确认他不是在出脑筋急转弯?
    ######不知道,根据我仅有的面试经验,一般都是先问一些基础的问题。我也不知道他为什么问这么摸不着头脑的问题。难道是在考察我的解决问题能力?######<span style=""color:#444444;font-family:'Microsoft YaHei', Verdana, sans-serif, 宋体;font-size:14px;line-height:normal;background-color:#FFFFFF;""> 数据库管理员没有权限看数据库,感觉就像厨师不能进厨房一样。######面试官的意思是不要在管理员权限方面限制不同权限级别的管理员######

    在java程序是对用户名和密码进行了加密后存入数据库的,登录的时候时候再提取数据库的数据进行相反的解密过程,如果一致,才通过

    根据你的描述,管理员A又可以管理服务器后台,又可以管理数据库,那只能说明管理员只能为一个(多了就权责不分了),当然最好的是 不要给A日志信息查看权限,要不然就他就可以做到天衣无缝。

    以上是个人对数据安全性的理解

    下面废话:1:不考虑数据库权限、不考虑加密、不考虑数据库类型,说明数据库安全性有问题。2:面试官的回答“登录修改用户密码和然后就可以登录了。” ,有点sb思维,我都看得到密码了,还用修改后台的密码,还要脱裤子放屁(多此一举)

    ######哈哈哈,面试官确实好坏######

    这种东西只有在登录的时候处理吧.

    数据库都是持久性的东西, 不管如何加密. 只要修改成一个我知道的明文加密的数据不就行了?

    所以,还是在登录的后台做处理.

    比如加密的是根据用户输入的密码加上用户名之类的处理过的密码.

    那么数据库管理员不知道后台的处理逻辑, 修改了数据库也无用.

    ######长知识了,谢谢######66666######

    看看是否可以这样做

    用户的相关信息只通过uuid来查询,并且所有信息与用户名无相关性。用户名和uuid的对应关系拆分成多个记录保存,比如用户名abc ,uuid 123-456-789-012-234 保存成加密后的记录

    cde asd

    ghi fdfd

    jkl rrr

    mno !3e

    pqr rwq

    这里第一列是abc加上序号 变成的abc1,abc2...再加密后的字符串,第二列是uuid片段加密后的数据,

    客户端通过多次请求再解密获取完整的uuid,然后获取数据,这样除非管理员能解密否则无法获得完整数据

    ######就是性能堪忧######这个有点厉害啊######

    引用来自“cys1357”的评论

    看看是否可以这样做

    用户的相关信息只通过uuid来查询,并且所有信息与用户名无相关性。用户名和uuid的对应关系拆分成多个记录保存,比如用户名abc ,uuid 123-456-789-012-234 保存成加密后的记录

    cde asd

    ghi fdfd

    jkl rrr

    mno !3e

    pqr rwq

    这里第一列是abc加上序号 变成的abc1,abc2...再加密后的字符串,第二列是uuid片段加密后的数据,

    客户端通过多次请求再解密获取完整的uuid,然后获取数据,这样除非管理员能解密否则无法获得完整数据

    可是都说了不允许加密了,实在想不出不加密怎么办了######你需要了解MySQL的“视图”是干嘛的。。。。。。。######视图不是也可以执行改数据操作吗######

    引用来自“cys1357”的评论

    看看是否可以这样做

    用户的相关信息只通过uuid来查询,并且所有信息与用户名无相关性。用户名和uuid的对应关系拆分成多个记录保存,比如用户名abc ,uuid 123-456-789-012-234 保存成加密后的记录

    cde asd

    ghi fdfd

    jkl rrr

    mno !3e

    pqr rwq

    这里第一列是abc加上序号 变成的abc1,abc2...再加密后的字符串,第二列是uuid片段加密后的数据,

    客户端通过多次请求再解密获取完整的uuid,然后获取数据,这样除非管理员能解密否则无法获得完整数据

    引用来自“钛元素”的评论

    可是都说了不允许加密了,实在想不出不加密怎么办了

    上面的加密只是为了去掉多个片段记录中用户名的相关性,让管理员无法通过搜索找出所有和这个用户名相关的记录项,不需要解密,只是一种变换算法。



    "
    2020-06-04 16:18:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云技术面试红宝书 立即下载
超全算法笔试-模拟题精解合集 立即下载
程序员面试宝典 立即下载