活跃技术:随机动态字符Redis(随机动态字符redis)
随机动态字符Redis是一种新的活跃技术,在像认证登录这样的安全场景里可以有效的阻止攻击者猜出正确的凭证。它的使用方法正如其名:将一组预先定义好的动态可变字符集应用到不同的安全事件中。当需要进行身份验证或授权时,客户端将单独的字符输入服务端并且被服务端接受(正如我们所期望的),然后服务端通过匹配预定义的字符元素来确认是否是正确的参数。
Redis的优势在于它的特定的实现,像传统的哈希函数验证一样,有着传统的非确定性验证机制,即比较长的数字或字符序列(字母,数字,下划线,符号,小括号类型的字符),当输入错误时,攻击者很难通过数学换算来确定它们是哪些字符组成的。这种技术利用Elixir 语言来定义预定义集合,push socket流技术时代带来了动态扩展,随机动态字符Redis以此实现非确定性验证过程,从而获得更多的攻击防御措施。
下面是一个基于Ruby on Rails的随机动态字符Redis的完整示例。
“`ruby
#config/initializers/redis.rb
# 定义出随机动态字符
DYNAMIC_CHARS = [:a..:z, :0..:9, ‘_’].map{|d| d.to_a }.flatten
# 构建动态字符池
Random.srand # 设置随机种子
pool_size = 8
charsPool = Array.new(pool_size) { DYNAMIC_CHARS.sample }.join
# 将动态字符验证加入到认证中
# 错误后重置pool
Rails.configuration.middleware.use Warden::Manager do |manager|
manager.default_strategies :password
manager.failure_app = lambda { |env|
SessionController.action(:new).call(env)
charsPool = Array.new(pool_size) { DYNAMIC_CHARS.sample }.join
}
end
以上是使用redis作为动态验证码的方法,在客户端输入的时候,需要正确的字符便可以进行验证,可以有效的提高整个系统的安全性。在抵御像字典攻击这样的攻击形式,Redis的动态验证机制将是一个有效的保护措施。