我们不断学习新知识的原因很多都是希望通过这些知识为自己找到一份不错的工作,获得更好的生活与未来。大家学习java也是希望能通过java得到更好的薪资水平。今天就来为大家分享一些java常见的面试题,一起来看看吧。

今天的面试题主要是与攻击有关的,具体内容如下。

第一题:什么是XSS攻击

答:跨站点脚本攻击,指攻击者通过篡改网页,嵌入恶意脚本程序,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。要如何防范XSS攻击?

1.前端,服务端,同时需要字符串输入的长度限制。

2.前端,服务端,同时需要对HTML转义处理。将其中的””等特殊字符进行转义编码。

防XSS的核心是必须对输入的数据做过滤处理。

第二题:什么是SQL注入攻击

答:攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。

用户登录,输入用户名lianggzone,密码‘or‘1’=’1,如果此时使用参数构造的方式,就会出现:select * from user where name = ‘lianggzone’ and password = ‘’or‘ 1’ = ‘1’

不管用户名和密码是什么内容,使查询出来的用户列表不为空。如何防范SQL注入攻击使用预编译的PrepareStatement是必须的,但是一般我们会从两个方面同时入手。

Web端

1.有效性检验。

2.限制字符串输入的长度。

服务端

1.不用拼接SQL字符串。

2.使用预编译的PrepareStatement。

3.有效性检验。

4.过滤SQL需要的参数中的特殊字符。比如单引号、双引号。

第三题、什么是CSRF攻击

答:跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。可以这么理解CSRF攻击:攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。CRSF能做的事情包括利用你的身份发邮件,发短信,进行交易转账,甚至盗取账号信息。

如何防范CSRF攻击?

1.安全框架,例如spring Security。

2.token机制。在HTTP请求中进行token验证,如果请求中没有token或者token内容不正确,则认为CSRF攻击而拒绝该请求。

3.验证码。通常情况下,验证码能够很好的遏制CSRF攻击,但是很多情况下,出于用户体验考虑,验证码只能作为一种辅助手段,而不是最主要的解决方案。

4.referer识别。在HTTP

Header中有一个字段Referer,它记录了HTTP请求的来源地址。如果Referer是其他网站,就有可能是CSRF攻击,则拒绝该请求。

但是,服务器并非都能取到Referer。很多用户出于隐私保护的考虑,限制了Referer的发送。在某些情况下,浏览器也不会发送Referer,例如HTTPS跳转到HTTP。

1)验证请求来源地址;

2)关键操作添加验证码;

3)在请求地址添加token并验证。