Java网络安全常见面试题

列举常见的WEB攻击,及解决方案

一、SQL注入

1、什么是SQL注入
  • 攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码。
2、如何预防SQL注入
  • 使用预编译语句(PreparedStatement)
  • 对进入数据库的特殊字符(’"尖括号&*;等)进行转义处理,或编码转换。
  • 使用Mybatis框架时,使用#{},防止sql注入

二、XSS攻击

1、什么是XSS
  • XSS攻击:跨站脚本攻击(Cross-SiteScripting)。XSS是一种常见的web安全漏洞,它允许攻击者将恶意代码植入到提供给其它用户使用的页面中。XSS的攻击目标是为了盗取存储在客户端的cookie或者其他网站用于识别客户端身份的敏感信息。一旦获取到合法用户的信息后,攻击者甚至可以假冒合法用户与网站进行交互。
2、XSS通常可以分为两大类
  • 存储型XSS,主要出现在让用户输入数据,供其他浏览此页的用户进行查看的地方,包括留言、评论、博客日志和各类表单等。应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击。这个流程简单可以描述为:恶意用户的Html输入Web程序->进入数据库->Web程序->用户浏览器。
  • 反射型XSS,主要做法是将脚本代码加入URL地址的请求参数里,请求参数进入程序后在页面直接输出,用户点击类似的恶意链接就可能受到攻击。

3、如何预防XSS

  • 过滤特殊字符
    避免XSS的方法之一主要是将用户所提供的内容进行过滤。
  • 使用HTTP头指定类型
    w.Header().Set(“Content-Type”,“text/javascript”)
    让浏览器解析javascript代码,而不会是html输出。

三、DDOS

1、什么是DDOS
  • DDOS:分布式拒绝服务攻击(DistributedDenialofService),简单说就是发送大量请求是使服务器瘫痪。
2、如何预防DDOS
  • 利用DDoS防御产品的检测技术和清洗技术,检测技术就是检测网站是否正在遭受DDoS攻击,而清洗技术就是清洗掉异常流量。

四、CSRF

1、什么是CSRF
  • CSRF(Cross-site request forgery),跨站请求伪造。

理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…造成的问题包括:个人隐私泄露以及财产安全。

2、CSRF的原理
  • 登录受信任网站A,并在本地生成Cookie。
  • 在不登出A的情况下,访问危险网站B

CSRF 就是网站 A 对用户建立信任关系后,在网站 B 上利用这种信任关系,跨站点向网站 A 发起一些伪造的用户操作请求,以达到攻击的目的。
而之所以可以完成攻击是因为B向A发起攻击的时候会把A网站的cookie带给A网站,也就是说cookie已经不安全了。

3、如何预防CSRF攻击
  • Synchronizer Tokens

    在表单里隐藏一个随机变化的token提交到后台进行验证,如果验证通过则可以继续执行操作

  • Hash加密cookie中csrf_token值

    采用的hash加密方法是JS实现Java的HashCode方法,得到hash值。前端向后台传递hash之后的csrf_token值和cookie中的csrf_token值,后台拿到cookie中的csrf_token值后得到hashCode值然后与前端传过来的值进行比较,一样则通过。

五、越权访问漏洞防护

1、什么是越权访问
  • 越权访问(BrokenAccessControl,简称BAC)是Web应用程序中一种常见的漏洞,分为垂直越权访问和水平越权访问。
  • 垂直越权是指不同用户级别之间的越权,如普通用户执行管理员用户的权限。
  • 水平越权是指相同级别用户之间的越权操作。
2、Web应用程序如果存在越权访问漏洞,可能导致以下危害:
  • 1)导致任意用户敏感信息泄露;
  • 2)导致任意用户信息被恶意修改或删除。
3、如何预防越权访问
  • 配置FILTER拦截器,对请求所有URL进行拦截,对于需要进行授权的URL进行权限校验,防止用户越权访问系统资源。

六、文件上传漏洞

  • 前台仅使用JS对文件后缀做了过滤,这只能针对普通的用户,而恶意攻击者完全可以修改表单去掉JS校验。
    项目中涉及上传下载未对文件大小以及类型进行验证,可能导致不良用户上传有害文件,危害服务器

解决方案:文件上传时在前台对文件后缀名进行验证,为避免通过特殊手段绕过了前端验证,在文件保存时再进行一次验证,即前后台同时验证的道理。

七、敏感信息泄露

  • 敏感信息泄露漏洞,是一种通过提交错误请求,使系统出现异常处理并报错,并且将系统程序、配置 等敏感信息泄露出来的漏洞。工程师发现系统搜索功能模块中普遍将系统的报错通printStackTrace 方法进行反馈,可造成报错信息如实的返回到前端。
    攻击者可以利用此漏洞收集系统报错中泄露的数据信息,包括处理函数,系统版本等等。可以通过此 类问题获得深入和更有目的性攻击的条件。

解决方案:建议统一处理错误页面,将错误信息存储在日志中。

八、短信轰炸

  • 发送短信验证码未进行次数限制,可以不断发送短信验证码,导致一定的经济损失。

解决方案:建议对发送的短信验证码进行频率限制,一段时间内仅仅发送多少条短信。

九、URL跳转漏洞

  • 任意URL恶意跳转可能会导致钓鱼等风险。

解决方案:改变传值方式,可以在前台传入对应type,根据type跳转到页面

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值