Java面试那点事——网络200306

♀尐吖头ヾ 提交于 2020-03-04 06:37:23

1. 什么 XSS 攻击?如何预防?

跨站脚本攻击

  • 【存储性(持久型)】
    存储型 XSS,也叫持久型 XSS,主要是将 XSS 代码发送到服务器(不管是数据库、内存还是文件系统等。),然后在下次请求页面的时候就不用带上 XSS 代码了。用户输入的带有恶意脚本的数据存储在服务器端。当浏览器请求数据时,服务器返回脚本并执行。最典型的就是留言板 XSS。

  • 【反射型(非持久型)】
    反射型 XSS,也叫非持久型 XSS,把用户输入的数据 “反射” 给浏览器。通常是,用户点击链接或提交表单时,攻击者向用户访问的网站注入恶意脚本。XSS 代码出现在请求 URL 中,作为参数提交到服务器,服务器解析并响应。响应结果中包含 XSS 代码,最后浏览器解析并执行。从概念上可以看出,反射型 XSS 代码是首先出现在 URL 中的,然后需要服务端解析,最后需要浏览器解析之后 XSS 代码才能够攻击

如何预防

  • 内容安全策略 (CSP)
    • 入参字符过滤
    • 出参进行编码
    • 入参长度限制
  • HttpOnly 阻止 Cookie 劫持攻击
    服务器端 Set-Cookie 字段设置 HttpOnly 参数,这样可以避免 Cookie 劫持攻击。这时候,客户端的 Document.cookie API 无法访问带有 HttpOnly 标记的 Cookie, 但可以设置 cookie。

2. 什么是 CSRF 攻击?如何预防?

跨站请求伪造:CSRF 就是利用用户的登录态发起恶意请求,借助用户的 Cookie 骗取服务器的信任。

如何预防

  • Referer Check,在 HTTP 头中有一个字段叫做 Referer, 它记录了该 HTTP 请求的来源地址。
  • token验证:在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,若请求无 token 或者 token 不正确,则认为可能是 CSRF 攻击而拒绝该请求。
  • 验证码:验证码会强制用户必须与应用进行交互,才能完成最终请求

3. 什么是 DDoS 攻击?如何预防

DDoS攻击:
全称 Distributed Denial of Service,中文意思为 “分布式拒绝服务”,就是利用大量合法的分布式服务器对目标发送请求,从而导致正常合法用户无法获得服务。通俗点讲就是利用网络节点资源如:IDC 服务器、个人 PC、手机、智能设备、打印机、摄像头等对目标发起大量攻击请求,从而导致服务器拥塞而无法对外提供正常服务,只能宣布 game over。

  • 资源消耗类攻击
    资源消耗类是比较典型的 DDoS 攻击,最具代表性的包括:Syn Flood、Ack Flood、UDP Flood。这类攻击的目标很简单,就是通过大量请求消耗正常的带宽和协议栈处理资源的能力,从而达到服务端无法正常工作的目的。
  • 服务消耗性攻击
    相比资源消耗类攻击,服务消耗类攻击不需要太大的流量,它主要是针对服务的特点进行精确定点打击,如 web 的 CC 攻击,数据服务的检索,文件服务的下载等。这类攻击往往不是为了拥塞流量通道或协议处理通道,它们是让服务端始终处理高消耗型的业务的忙碌状态,进而无法对正常业务进行响应

DDoS防护:
DDoS 的防护系统本质上是一个基于资源较量规则过滤的智能化系统

  • 资源隔离:资源隔离可以看作是用户服务的一堵防护盾。

  • 用户规则:根据流量类型、请求频率、数据包特征、正常业务之间的延时间隔等,判断用户是否为攻击行为。

  • 大数据智能分析


4. 什么是 SQL 注入攻击?如何预防?

SQL 注入(SQLi)是一种注入攻击,,可以执行恶意 SQL 语句。它通过将任意 SQL 代码插入数据库查询,使攻击者能够完全控制 Web 应用程序后面的数据库服务器。攻击者可以使用 SQL 注入漏洞绕过应用程序安全措施;可以绕过网页或 Web 应用程序的身份验证和授权,并检索整个 SQL 数据库的内容;还可以使用 SQL 注入来添加,修改和删除数据库中的记录。

  • 带内注入:依赖于攻击者修改应用程序发送的 SQL,以及浏览器中显示的错误和返回的信息。
  • 盲注入:推理 SQL 注入(根据:HTTP 响应中的详细信息,某些用户输入的空白网页以及数据库响应某些用户输入需要多长时间)
  • 带外注入:攻击者会制作 SQL 语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。

预防SQL注入:

  • 不要使用动态 SQL
  • 不要将敏感数据保留在纯文本中
  • 限制数据库权限和特权
  • 避免直接向用户显示数据库错误
  • 对访问数据库的 Web 应用程序使用 Web 应用程序防火墙(WAF)
  • 将数据库更新为最新的可用修补程序

【Java 面试那点事】

这里致力于分享 Java 面试路上的各种知识,无论是技术还是经验,你需要的这里都有!

这里可以让你【快速了解 Java 相关知识】,并且【短时间在面试方面有跨越式提升】

面试路上,你不孤单!
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!