zoukankan      html  css  js  c++  java
  • Rails项目防止时序攻击

      时序攻击属于侧信道攻击/旁路攻击(Side Channel Attack),侧信道攻击是指利用信道外的信息,比如加解密的速度/加解密时芯片引脚的电压/密文传输的流量和途径等进行攻击的方式,一个词形容就是“旁敲侧击”。

      举一个最简单的计时攻击的例子,某个函数负责比较用户输入的密码和存放在系统内密码是否相同,如果该函数是从第一位开始比较,发现不同就立即返回,那么通过计算返回的速度就知道了大概是哪一位开始不同的,这样就实现了电影中经常出现的按位破解密码的场景。密码破解复杂度成千上万倍甚至百万千万倍的下降。

      在验证密码,验证token时会比较容易被时序攻击。例如rails验证用户的token时,用户请求的参数token,和数据库用户的token user.token作对比,如果匹配则认证成功。

      为了防止时序攻击,rails项目可以用 ActiveSupport::SecurityUtils.secure_compare 方法去比较两个值是否匹配。

      

    if ActiveSupport::SecurityUtils.secure_compare(user.token, token)
      true
    else
      false
    end

      

  • 相关阅读:
    MySQL<事务与存储过程>
    MySQL<多表操作>
    MySQL<表单&集合查询>
    统计 fastq 文件 q20 , GC 含量的软件
    C语言插入排序
    samtools flags 的含义
    vsearch 去除重复序列和singleton 序列
    Fastqc 能够识别的碱基编码格式
    Fastqc 碱基质量分布图
    利用kseq.h parse fasta/fastq 文件
  • 原文地址:https://www.cnblogs.com/wangyuyu/p/9010544.html
Copyright © 2011-2022 走看看