zoukankan      html  css  js  c++  java
  • 从前端角度看ajax如何保护接口的安全性

    一、前言

      在web中,使用Ajax调用API,撇开跨域不讲,怎么做安全验证,防止别的网站调用呢?假设没有做安全保障,任何用户都可以直接访问接口,这回暴露出极大的安全隐患。

    二、后端怎么做?

      1、一些接口强制用户必须登录,通过查看sessionId来做判别,没登录则不返回数据或者返回401或者403;

      2、cookie校验+session;

      3、通过判断refer,限制只允许某些域名下访问;

      4、直接限制ip,简单粗暴;

           5、签名加密参数,不过会增加服务器负载

      以上我理解的可能过于片面,真正的后端已经要进行更多的校验;

    三、前端可以怎么做?

    主要是考虑身份认证

      1、请求头添加token  

    $.ajax({
       type: "GET",
       url: "XXXXX",
       beforeSend: function(request) {
          request.setRequestHeader("token", "*********");
       },
       success: function(result) {
                    
       }
    });

      2、token怎么来?

      请求指纹: 一个请求有很多指纹信息,比如说请求的url和url中的信息,('/books'),请求的ip,请求的UA,请求的标头信息,等等。请求指纹来计算token的话,可以保证无状态特性。

      依赖ip: 对请求的客户端 ip 值进行 hash 来作为 token;这样是没有状态的。

      依赖session: 这种方法很适用于web网站,就是当用户登录后,对用户的请求根据用户的信息生成 token 存放到 session 中。

      下面是看网上的别人设计的,其实看具体设计了。

      token = md5(IP + 随机数 + 时间戳 + UID + 秘钥);//这个秘钥最好随着版本更换

    --------------------------------------以后想到再慢慢加了----------------------------------------

     参考:

    http://blog.jobbole.com/99816/

    https://segmentfault.com/q/1010000002500378/a-1020000002502912

    https://segmentfault.com/q/1010000006185859

    https://www.v2ex.com/t/109392

  • 相关阅读:
    js中replace的正则替换
    ios沙盒路径
    Android开源框架
    小知识点
    __NSCFConstantString && __NSPlaceholderDictionary
    iq 格式分析
    C 函数
    Xcode报错
    XMPP Server
    H5网站借鉴
  • 原文地址:https://www.cnblogs.com/leaf930814/p/9048550.html
Copyright © 2011-2022 走看看