首页 > 编程语言 >Java网络安全常见面试题

Java网络安全常见面试题

时间:2024-11-06 18:16:55浏览次数:3  
标签:网络安全 XSS 面试题 Java 攻击 用户 CSRF 攻击者 越权

列举常见的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跳转到页面

标签:网络安全,XSS,面试题,Java,攻击,用户,CSRF,攻击者,越权
From: https://blog.csdn.net/Hacker_Nightrain/article/details/143575482

相关文章

  • 信息安全工程师(79)网络安全测评概况
    一、定义与目的    网络安全测评是指参照一定的标准规范要求,通过一系列的技术、管理方法,获取评估对象的网络安全状况信息,并对其给出相应的网络安全情况综合判定。其对象主要为信息系统的组成要素或信息系统自身。网络安全测评的目的是为了提高信息系统的安全防护能力,......
  • Java键盘录入
    键盘录入next()、nextLine()可以接受任意数据,但是都会返回一个字符串;nextInt()只能接受整数,键盘录入小数或者其他字母,就会报错;nextDouble()能接收整数和小数,但是都会看做小数返回,录入字母会报错。注意:next()、nextInt()、nextDouble()在接收数据的时候,会遇到空格,回车,制表符......
  • java计算机毕业设计基于的大学宿舍管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着大学教育的不断发展,高校规模日益扩大,学生数量不断增加,传统的宿舍管理方式面临着巨大的挑战。传统的手工登记和管理模式存在效率低下、信息容......
  • java计算机毕业设计最优网络购票系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着信息技术的飞速发展,网络购票系统在现代社会中的应用日益广泛。在交通、娱乐等多个领域,人们对于便捷、高效的购票方式需求不断增加。传统的购......
  • 使用 【Java】 集成 【Elasticsearch】:详细教程
    Elasticsearch是一个开源的分布式搜索引擎,它能够快速地存储、搜索和分析大量的文本数据。它基于ApacheLucene构建,广泛应用于日志分析、全文搜索、推荐系统等场景。本文将详细介绍如何在Java项目中集成Elasticsearch,包括如何配置、索引文档、查询数据、以及与Elasticsea......
  • Object.assign(), 一道关于基本类型合并的面试题
    vars1="abc";vars2=true;vars3=10;vars4=Symbol("foo")varobj=Object.assign(s1,null,s2,undefined,s3,s4);console.log(obj);//{"0":"a","1":"b","2":"c&quo......
  • 基于Java的家庭理财系统app设计和实现
    目录:目录:博主介绍: 完整视频演示:你应该选择我技术栈介绍:需求分析:系统各功能实现一览:1.注册2.登录部分代码参考: 项目功能分析: 项目论文:源码获取:博主介绍: ......
  • 【问题解决】java.lang.SecurityException: JCE cannot authenticate the provider BC
    问题复现历史项目升级JDK(由1.7升级到8),进行加密/解密时出现报错java.lang.SecurityException:JCEcannotauthenticatetheproviderBC。问题原因Wikipa上查到JCE的描述如下:JavaCryptographyExtension(JCE)isanofficiallyreleasedStandardExtensiontotheJavaPl......
  • 浏览器是如何渲染页面的? - 2024最新版前端秋招面试短期突击面试题
    浏览器是如何渲染页面的?-2024最新版前端秋招面试短期突击面试题【100道】......
  • [Javascript] Iterate over Object
    const[a,b]={a:3,b:4,};console.log(a,b);//TypeError:{(intermediatevalue)(intermediatevalue)}isnotiterable Howtomakeitworkwithouttouchoriginalcode?Weneedtouse[Symbol.iterator]forObject.prototype;Object.prototype[Sym......