vlambda博客
学习文章列表

Zking干货集丨Java面试中碰到安全有关的问题应该怎么答?

Zking干货集丨Java面试中碰到安全有关的问题应该怎么答?
Zking干货集丨Java面试中碰到安全有关的问题应该怎么答?

还记得,上大学那会儿, Java 并没有现如今这么火。在网上,学 Java 一般会被 C++ 鄙视,因为他们学习 C++的小伙伴会有天生的优越感,认为 Java 不用自己管理内存,什么事情都不用你亲自管,JVM 都帮你搞定,“笨蛋”都能学会!而我当时就是哪些“笨蛋”中的一员,那个时候,就在心理默默问自己:Java 真的有那么简单吗?


在我的圈子里,常有小伙伴问,为什么本来自己懂的知识点,却面试的时候回答不出来?


我给的答案是,你问一下自己是否真的懂了?你回答不出来,说明你真的没有理解透彻某个知识点,在大型互联网公司技术面试中,面试官都会从一个小的知识点作为切入点,来不断进行深挖,从而来得知你整个知识体系的深度与广度。


下面给大家分享一下近几年来互联网行业越来越看重的安全问题:


众所周知互联网安全是一门涉及计算机科学、网络技术、通讯技术、密码技术、信息安全技术、应用数学、数论、信息论等多种科学的综合性学科。


互联网安全从其本质上来讲就是互联网上的信息安全。从广义来说,凡是涉及到互联网上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。


曾经,有很多学生问我,老师,你会不会做木马,会不会做病毒,我的回答是不会。首先,作为一名讲师,我不能让我的学生走到违法的道路上,而是应该让他们学习更多的技术,为企业更快的带来更大的价值,从而也可以提升自我价值,达到升值加薪,迎娶白富美,走向人生巅峰的道路。然后,对于一个病毒和木马,并不是单单的只需要了解怎么来做病毒和木马,需要了解和学习的技术也是一时半会说不清的。所以我很干脆的回答说不会。


但其实,抛开木马与病毒,我们单从一个Java web网站来说,其实想要通过攻击网站的方式有很多种,比如说sql注入攻击,文件上传攻击,XSS跨站攻击,明文漏洞攻击,会话重放攻击等等。


由于之前某些网站被攻击后大量用户信息泄露,互联网也越来越看重网站的安全性,一些同学在面试时也会被问到有关于安全方面的问题。


比如说最简单的明文漏洞的问题。众所周知,基本上需要登录的网站,经过几次信息泄露的洗礼,至少在数据库中都不会保存明文的密码,处理明文漏洞的方式最常见的无非就是MD5的密码加密,但是,MD5就真的安全了么?


稍微有一些经验的程序员就会知道,MD5这种处理方式其实是不安全,为什么呢?下面给大家介绍一下几种常见的密码保存方式:


1、直接明文保存,比如用户设置的密码是“123456”,直接将“123456”保存在数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。


2、使用对称加密算法来保存,比如3DES、AES等算法,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、分开管理,但要完全保护好密钥也是一件非常复杂的事情,所以这种方式并不是很好的方式。


3、使用MD5、SHA1等单向HASH算法保护密码,使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。


4、特殊的单向HASH算法,由于单向HASH算法在保护密码方面不再安全,于是有些公司在单向HASH算法基础上进行了加盐、多次HASH等扩展,这些方式可以在一定程度上增加破解难度,对于加了“固定盐”的HASH算法,需要保护“盐”不能泄露,这就会遇到“保护对称密钥”一样的问题,一旦“盐”泄露,根据“盐”重新建立彩虹表可以进行破解,对于多次HASH,也只是增加了破解的时间,并没有本质上的提升。


5、PBKDF2算法,该算法原理大致相当于在HASH算法基础上增加随机盐,并进行多次HASH运算,随机盐使得彩虹表的建表难度大幅增加,而多次HASH也使得建表和破解的难度都大幅增加。使用PBKDF2算法时,HASH算法一般选用sha1或者sha256,随机盐的长度一般不能少于8字节,HASH次数至少也要1000次,这样安全性才足够高。一次密码验证过程进行1000次HASH运算,对服务器来说可能只需要1ms,但对于破解者来说计算成本增加了1000倍,而至少8字节随机盐,更是把建表难度提升了N个数量级,使得大批量的破解密码几乎不可行,该算法也是美国国家标准与技术研究院推荐使用的算法。


6、bcrypt、scrypt等算法,这两种算法也可以有效抵御彩虹表,使用这两种算法时也需要指定相应的参数,使破解难度增加。


下表对比了各个算法的特性:

算法

特点

有效破解方式

破解难度

其他

明文保存

实现简单

无需破解

简单


对称加密

可以解密出明文

获取密钥

需要确保密钥不泄露

单向HASH

不可解密

碰撞、彩虹表


特殊HASH

不可解密

碰撞、彩虹表

需要确保“盐”不泄露

Pdkdf2

不可解密

需要设定合理的参数


通过以上几种密码保存方式的讲解后,相信大家对密码的保存方式也有了一定的了解,如果当面试官问到你和安全有关的问题时,你是不是就知道该如果作答了。





卓景京是湖南省大学生实训与就业双优单位,被湖南省教育厅授权为校企合作人才培养示范基地。与湖南大学、湘潭大学、湖南科技学院、娄底人文科技学院等省内著名的本科院校共建企业级开发、移动互联网实验室,是湖南省计算机协会理事会成员。


同时,卓景京专业的就业指导团队更是为学员提供了优质的就业服务和广泛的就业渠道。小到简历的制作、面试礼仪的培训;大到500强企业面试实训及如何针对性地制定计划,帮助学员拿到高薪Offer。


Zking干货集丨Java面试中碰到安全有关的问题应该怎么答?



Zking干货集丨Java面试中碰到安全有关的问题应该怎么答?

END


Zking干货集丨Java面试中碰到安全有关的问题应该怎么答?

 

 

选择对了,你就成功了一半


湖南卓景京信息技术有限公司

总部位于国家级战略新区-湖南湘江新区中心城区-梅溪湖创新中心。是一家以软件研发、技术服务、人才培养与输送为核心,提供通用产品、行业解决方案、软件外包、智能化建筑、系统集成和信息服务的高科技公司,下设软件研发、职业教育部、大学生事业部三大板块。

QQ咨询:800061941

很多人的愿望都是天天在变


而我很专一

就是等待你的关注

扫码关注我们