数据库设计与应用过程中的安全性涉及到哪些方面?

用户2055117494949


嗨,老铁,先说说数据库设计的注意事项,最近一个项目中,数据库表结构的设计都是由我来设计,在设计的过程中,并没有考虑到性能的因素,所以在规定字段类型的时候,为了省事把许多字段一律设置成varchar类型,varchar类型即为字符串类型,因为varchar类型确实很强大,什么东西都可以存,如果不考虑性能的话,这一个类型基本就可以满足日常的需求了,但是如果考虑到性能,那肯定不能全部用varchar!

那么就要提到数据类型了,在java中有以下几种基本类型:

float 4 字节 32位IEEE 754单精度

double 8 字节 64位IEEE 754双精度

byte 1字节 -128到127

short 2 字节 -32,768到32,767

int 4 字节 -2,147,483,648到2,147,483,647

long 8 字节 -9,223,372,036,854,775,808到9,223,372,036, 854,775,807

char 2 字节

boolean 1 字节 True或者false

String 不属于基本类型,这是以前考试会经常考的!

这些都只是基础知识,似乎在开发中无关紧要,毫无意义! 错了, 看到后面的字节数了吗? 意义来了, 当我们把数据存在数据库中的时候,这些字节数就显得非常重要,因为要影响到性能了,我们来看看用varchar存放的时候是什么情况:

java代码:

String chinese1 = "你好";

String chinese2 = "你喝水吗";

String chinese3 = "12233444";

String chinese4 = "fuck you man";

System.out.println("chinese1占的字节"+chinese1.getBytes().length);

System.out.println("chinese2占的字节"+chinese2.getBytes().length);

System.out.println("chinese3占的字节"+chinese3.getBytes().length);

System.out.println("chinese4占的字节"+chinese4.getBytes().length);

控制台输出:

chinese1占的字节6

chinese2占的字节12

chinese3占的字节8

chinese4占的字节12

存在数据库中的时候字符串所占的字节数是根据实际内容的长度来确定的,也就是说,如果你存放的是数字,12233444如果用int型存放的话只需要4个字节,用字符串存放需要的就是8个字节,长度越长字节越高! 如果数据库存的数据量不大,那当然没有区别,如果存放的数据量巨大的话,性能的差异就会体现出来了!

所以说,刚刚毕业的时候一直搞不清楚为什么老是问这些简单的问题,原来还是有用的啊! 所以,数据库设计的时候不要把类型都定义成varchar ,时间类型如20200326,这种的也可以用int来存放,这样就又节省了一些空间了! 数据类型设计注意要设计的合适这个字段才是最恰当的!

接下来说说java数据传输的安全性:

程序分成前台和后台,前台调用后台的时候,通过http请求到后台的servlet中,携带一些参数,然后后台通过解析这些参数去操作数据库。 所以这些参数中很可能带有数据库中非常重要的字段,例如主键id,或者你的账号名称,密码之类的。现在坏人很多,而且坏人也很厉害,他们能截取你的通信数据,如果获得到这些重要的字段他们也许可以做一些坏事,去破坏你的数据库! 所以前台和后台之间的数据交互安全性很重要, 所以很多接口的使用都使用到了token, token是一串毫无意义的字符串,被坏人知道了,他也很无奈,没有用! 但是这个token却是后台和前台通信的密码。

原理是这样的, 后台把ID存在内存中,java中其实就是 定义一个static类型的 Map , key 就是token,value就是数据中的id字段,或者别的不愿意透露给前台的字段,tocken是随机字符串!把token告诉前台,以后前台要取数据,直接把token传回来,然后去用token取出这个存放的ID,token一般是在登录后返回的,如果token不正确,那就要让它重新登录了!这样就可以防止数据泄露! 这种方法比直接传ID要安全的多!


向上的孟哥


数据库安全一方面是系统运行安全系统运行安全通常收到的威胁如:一些网络不法分子通过网络,局域网等途径通过入侵电脑使系统无法正常启动,或超负荷让计算机运行大量算法,并关闭cpu风扇,使cpu过热烧坏等破坏性活动。

另一方面是系统信息安全,系统安全通常收到的威胁是黑客对数据库入侵,并盗取想要的资料。数据库的安全员主要是针对数据而言,包括数据独立性,数据安全性,数据完整性,并发控制,故障恢复等几个方面。网络的开放性给数据库系统安全带来了严重的安全隐患。


咕噜手绘


1、所有的SQL exception 信息都不能直接返回给客户端。

2、在任何情况下使用完Connection后都要释放连接,特别是在抛出异常的时候也要释放Connection。

3、表中的用户敏感信息要加密存储,最好在加密的时候加入几位随机数。

4、所有的数据库访问都用preparestatement的方式或者封装为存储过程。

5、配置文件中的数据库访问用户名和密码都加密并编码存放。

6、系统上线运行时,仅给数据库用户必要的权限。


分享到:


相關文章: