新时代的前端还须要懂得网络安全

前言

随着学习的深刻,已经不只仅只知足于编写前端的代码,把一个事情的问题看到更多更深远的地方去,慢慢了解网络访问的安全问题,势在必行。php

开始

学习资料内容,基本从书本上获取,结合本身的理解,阐述出来,总结,在开始学习安全问题以前,咱们必须先要了解,为何会会有安全问题产生html

从输入url到页面显示经历了怎么一个过程

  1. 页面输入url
  2. 浏览器会经过url寻找到dns服务器
  3. 根据dns服务器找到ip地址
  4. 根据ip地址访问到咱们服务器中(如今通常是nginx)
  5. nginx设置安全访问以及过滤请求到咱们服务器中的文件
  6. 后台代码响应url的请求(页面就返回文件,请求返回相应的内容)
  7. 页面渲染

简单的来说就是,url->dns->nginx->java(php)->browser,其中dns获取到ip地址以后,浏览器会发送一个http请求,至于http请求,能够看个人上一篇文章前端

从头开始理解http吧java

DNS挟持

页面输入url以后,经过特殊的方法(这里不详细描述)将原域名的DNS解析权弄到手,修改掉原先的ip地址,将DNS指向攻击者的ip地址nginx

预防sql

  1. 启用备用域名,当其中一个域名被劫持以后,使用备用域名
  2. 手动修改DNS,将其改成114.114.114.114,备用DNS服务器改成8.8.8.8
  3. 修改浏览器的登陆密码
  4. 将DNS转为http DNS解析

http挟持

通常是响应html的请求时候,运营商进行挟持,嵌入广告而后用iframe返回原网站内容,即在http传输过程当中,篡改响应体数据库

预防后端

  1. 使用https协议,保证咱们的服务器可以确保接收到请求

sql注入

union注入攻击

可以造成union注入攻击的条件
  1. where 条件后面可带字符串,如:id=1与id=1`返回不一样的结果
  2. 接口请求可以返回数据库数据
union注入攻击的方式
  1. 经过orderby来获取字段数
  2. 在搜索条件以后写上union(select 1,2,3【字段长度】)获取可输入的位置
  3. 在可输入sql语句的位置输入database(),获取数据库名称
  4. 而后经过数据库名称,来获取表名称
  5. 最后经过表名称,获取字段名称,并添加数据或者修改数据
防范方式
  1. 严格监控传入的数据,避免输入内容存在特殊值
  2. 前端没办法控制这个方案,只能在页面上控制,若是单独拎出来接口进行调试,那只能靠后端对数据进行验证

Boolean注入攻击

构造sql判断语句,经过返回结果判断哪些条件是成立的,以及获取数据库中的数据浏览器

造成Boolean注入攻击的条件
  1. 返回的结果一直为yes or no , 不返回数据库数据
Boolean注入的攻击方式
  1. 输入 leagth(database())>=nums
  2. 不断的判断长度以后,而后确认长度,在逐字进行判断使用substr方法
  3. 经过相似的方法,判断出数据库中的表名跟字段名
防范方式

一样的,须要处理输入内容,发现异常字符串,直接返回错误或者禁止访问安全

注入方式还有其余方法,相似于报错注入,时间注入,堆叠注入等等注入方式,有兴趣能够去百度查一查,虽然都是大同小异。 现阶段的各类后端框架通常都对sql注入进行了校验,除非本身手写sql而后拼接内容,不然正常状况下是不会存在sql注入的风险,固然很强的黑客技术除外,我只是个小萌新的看法

XSS

一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它容许恶意用户将代码注入页面,其余用户在浏览网页时会受到影响。

XSS攻击分为3中,反射型XSS、存储型XSS、dom型XSS

反射型XSS

攻击者会经过各类方式发送包含XSS代码的连接,而后用户打开连接并输入其内容以后,服务端会返回包含XSS代码的恶意脚本,并触发。

存储型XSS

将XSS内容存入数据库中,只要有人访问这个网页就会触发XSS代码,多用于论坛,留言板等须要长段内容输入的地方

dom型XSS

实际上也属于反射型XSS,使用dom对象去处理XSS代码,攻击者将专门设计过的url发送给用户,用户打开连接,浏览器就相应其中的XSS代码,多出如今数据初始化阶段

预防

  1. 过滤输入的数据,包括各类危险符号
  2. 对输出的页面的数据进行相应的编码转换

CSRF

攻击者编写非法连接,放入网站A,目标用户在访问网站A的时候,已经登陆自动带上cookie,这个时候去访问攻击者写的非法连接,就可以直接使用目标用户的cookie来作一些事情

攻击前提

  • 目标用户已经登陆了网站,可以执行网站的功能
  • 目标用户访问攻击者构造的url

预防

  1. 验证请求的referer值
  2. 登陆后随机产生一个token,请求的时候带上token

后记

还有不少其余的攻击方式,大多数都是属于后端服务保护范畴,对于前端的保护,鉴于理解这么些攻击方式,我以为差很少了。毕竟对于前端来讲,这些攻击不少都是可以直接绕过前端代码进行的

相关文章
相关标签/搜索