常见网络攻击与防御方法

目录

Xss(跨站脚本攻击)

Sql注入

CSRF(跨站请求伪造攻击)

DDos


Xss(跨站脚本攻击)

概念将可执行的前端脚本代码植入到网页中,通常是利用网页开发时留下的漏洞,注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。

其分为两种类型:一种是反射型,一种是持久型。

反射型是将脚本代码放在URL中,当用户点击URL,该请求就会通过服务器解析返回给浏览器,在返回的响应内容中出现攻击者的XSS代码,浏览器执行时就会中招了。

存储型是将恶意代码被存储在web server中。黑客通过XSS的漏洞,将内容经正常功能提交进入数据库持久保存,当进行数据库查询的时候,再将攻击脚本渲染进网页,返回给浏览器执行。

XSS防御

  1. 对输入和URL参数进行过滤,也就是说对提交的内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容
  2. 对输出进行编码在输出数据之前对潜在的威胁的字符进行编码,使脚本无法在浏览器中执行。
  3. 使用HTTPOnly,一般XSS攻击通过利用js脚本读取用户的cookie,设置了HTTPOnly后js脚本就无法获取到cookie,应用程序一般也不会在js中操作这些敏感的cookie。

Sql注入

概念:让web服务器执行攻击者期望的sql语句,以便得到数据库中的数据,或对数据库进行读取,修改,删除,插入。sql注入常规套路在于将sql语句放在表单中提交给后端服务器 ,如果后端服务器没有做任何安全性校验,直接将变量取出进行数据库查询,则极易中招。

sql注入防御:

  1. 限制数据类型在传入参数的地方限制参数的类型,比如整型,只有get到的id为数字或者数字字符时才能执行下一步。
  2. 正则表达式匹配传入参数对传入的值进行匹配,如果不符合就过滤正则表达式匹配很消耗服务器的性能,因此攻击时可以构造大量的正常语句骗过服务器,当后台对数据的处理达到最大限制的时候就会放弃匹配后面的非法语句。
  3. 函数过滤转义防止”和’进行转义这里应该是防止拼接
  4. 预编译语句,使用预编译语句绑定变量。使用预编译相当于将数据用代码分离的方式,把传入的参数绑定为一个变量,用?表示,攻击者无法改变sql的结构。将传入的参数当作纯字符串的形式作为username执行,避免sql语句中的拼接闭合查询语句的过程。可以理解为字符串与sql语句的关系区分开,username此时作为字符串不会被当做之前的sql语句被带入数据库执行,从而避免了类似sql语句拼接,闭合等非法操作。

CSRF(跨站请求伪造攻击)

概念:利用用户已经登陆的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求,利用受害者在被攻击网站已经获取的注册凭证(比如cookie),绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

CSRF防御:

  1. 使用验证码在关键的操作页面加上验证码,后台收到请求后通过判断验证码可以防御CSRF,但这种方法对用户不太友好
  2. 在请求地址中加入token验证。连接请求中用户验证信息都是存在cookie中,因此黑客可以通过cookie来通过安全验证(cookie也可以通过Xss攻击获得)在http请求中以参数的形式加入一个随机产生的token,在服务器端建立一个拦截器来验证这个token,如果验证不通过,则拒绝该请求
  3. 验证http referer字段http头中的referer字段记录了该http请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,而如果黑客要实施csrf攻击,一般只能在自己的网站构造请求,因此可以通过验证referer值来防御csrf攻击。

DDos

概念:攻击者使用多台计算机执行dos攻击。dos攻击是攻击者不断向服务器提出请求,占用服务器多资源,导致服务器无法处理正常的请求。

DDos防御:

  1. CDN通过多个CDN连接点相互承受攻击,不容易由于一个连接点被攻击而导致瘫痪(隐藏服务器IP,让CDN为服务器承担攻击)采用CDN要隐藏源服务器的ip地址,要不然攻击可以越过CDN直接攻击源服务器
  2. 配置web防火墙
  3. 高防IP将攻击流量引流到高防IP,从而保护真正的ip不被暴露,确保源站的稳定可靠。
  4. 采用高防服务器独立单个硬防御应对ddos攻击和cc攻击100g以上的服务器

你可能感兴趣的:(计算机网络,网络,安全,web安全)