跨域的整理及web安全攻击

一,什么是跨域

(ps:同源策略:一种约定,是浏览器最基本的安全功能。web 相当于建立在同源策略基础之上的,不同源的客户端脚本在没有授权的情况下,不能进行读写操作)
不同源
1,连接,重定向和表单提交
2,跨域资源可以引入,但是js不能读写加载的内容,比如标签,<, for>。

转义方式:
方法一:
function escape(str) {
 str = str.replace(/&/g, '&')
 str = str.replace(/, '<')
 return str
}
   // -> <script>alert(1)</script>
     escape('')
    escape对字符串进行编码
    ----------------------------------
  方法二:   白名单方式
    const xss=require('xss')
  let html = xss('

XSS Demo

'
) // ->

XSS Demo

<script>alert("xss");</script>
方法三:CSP : Content-Security-Policy CSP的本质就是建立白名单,开发者明确告诉浏览器哪些资源可以下载和执行。配置相应的规则,怎么拦截就是浏览器的事了 开启CSP的两种方式: 1,设置HTTP Header的Content-Security-Policy Concent-Security-Policy:default-src 'self' 只加载本站资源 Concent-Security-Policy: img-src https://* 图片只加载https协议的 2,设置meta标签的方式:
  • 1 ,js代码注入的时候,注意将标签关闭,将前端输入进行转义
    • 2,append的利用:jq会将append元素转为fragment标签的时候找到script标签,再使用eval()执行一遍。
    • 3,地址加转义字符:img标签的再次使用,加载失败时会调用该元素的onerror事件
    • 4,将重要的cookie标记为httponly,这样js脚本就不能获取到cookie
(2) CSRF(跨域请求伪造)

原理:
网站的一些提交行为被黑客利用,你在访问黑客网站进行的一些操作会被操作到其他网站。
1,登录信任网站A:在本地生成cookie
2,在不登出A的情况下,访问危险网站B
防范
1,合理使用post,get,get请求不对数据进行修改
2,不让第三方网站访问到cookie
3,阻止第三方网站请求接口
4,请求时附带验证信息,验证码,token

  • 通过验证码,除了用户,其他网站获取不到本次本次session的验证码。
  • 使用token:随机生成一个token,在用户提交数据的时候也要携带token ,与服务器中的进行对比
    5,referer检查:检查请求header中的referer
    CSRF和XSS的区别
    XSS是获取信息,不需要提前知道用户的代码和数据包
    CSRF是代替用户完成指定的动作,需要知道其他用户的代码和数据包
(3)SQL注入

原理: 和xss类似,是由于将用户输入的数据当成命令来执行,
把SQL命令注入到web表单提交,或输入域名,或页面请求的查询字符串中

select * from user where username = 'leo' 
如果参数是:leo'; drop table user--, 则会误删除一个表
select * from user where username = 'leo'; drop table user--' 

SQL防御

  • 参数绑定
    使用预编译语句,绑定参数。
  • 使用正则表达式过滤传入的参数
(4)DoS攻击(Denial of Service拒绝服务)

原理: 攻击者通过伪造ACKS数据包,希望服务器重传某些数据,攻击者利用TCP协议漏洞,发送大量半连接请求,耗费CPU和内存资源。
SYN Flooding攻击
原理:攻击者利用无效的IP地址,利用TCP连接的三次握手,连续发送会话请求,使主机一直处于会话请求中,直至连接超时,最终因耗费资源而停止。

(5)DNS欺骗

虚假的DNS服务在真实的DNS服务之前向客户端发送报文数据,两者的ID相同,所以会接收虚假报文,丢弃真实的报文,DNS ID序列号欺骗成功。
检测:
1)在限定的时间内如果收到两个或多个响应数据报文,则视为DNS欺骗
2)主动发送验证包检测是否有DNS欺骗
防御:
1)客户端直接使用IP地址访问重要的站点
2)对DNS服务和客户端的数据进行加密服务端可以使用SSH加密协议,客户端使用PGP软件。

(6)中间人攻击

攻击方能同时与客户端和服务端建立连接,能获取通道信息,并能修改
公共的wifi
防范:
增加一个安全通道来传输信息,比如https传输(注意点:如果没有完全关闭http的话,攻击方可以通过将https降级为http)

你可能感兴趣的:(前端)