常见防御手段之密码安全和验证码原理解析

263 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情

前言

现在网络安全已经成为现代互联网中重中之重关乎着生命财产安全,常见得安全防御手段比如明文存储、单项变换、变换复杂度要求、密码复杂度得要求、防拆解、MD5 sha1 sha256-hash等

密码安全

  • 泄漏渠道 数据库被偷、服务器被入侵、通讯被窃听、内部人员泄漏、撞库等
  • 哈希算法
  1. 明文-密文对应
  2. 雪崩效应->明文小幅度变化,密文剧烈变化
  3. 密文->明文无法反推
  4. 密文固定长度MD5、sha1、sha256等
  • 密码传输安全
  1. http传输
  2. 频次限制
  3. 前端加密意义有限->传输层加密不会泄露但不代表不能登录
  • MD5反查 摘要密码得复杂度
const crypto = require('crypto')
const hash = (type, str) => crypto.createHash(type).update(str).digest('hex')
const md5 = str => hash('md5',str)
const sha1 = str => hash('sha1',str)
const encryptPassword = (salt, password) => md5(salt + 'abced@#4@%#$7' +
password)
const psw = '123432!@#!@#@!#'
console.log('md5', md5(psw))
console.log('sha1', sha1(psw))
module.exports = encryptPassword

不过会有一些问题:比如两次MD5是否可取A OK B NO、只加盐遇到得问题、中间得字符串作用等

人机验证和验证码原理

1650878637(1).png 滑动验证码实现原理:

  1. 服务端生成抠图和带有抠图阴影得背景图并保存抠图位置得坐标
  2. 前端实现滑动交互,将抠图拼在阴影上并获取到滑动距离得值
  3. 前端将用户滑动距离值传入到后端,服务端进行校验(范围) 单纯得校验用户滑动距离是最基本得校验,处于更高安全考虑,可以考虑用户滑动整个轨迹,用户再当前页面上得行为等,可以将其细化复杂得地步,可以根据实际情况设计,或者借助用户行为进行分析获取分析模型,最终目标是增加非法得模拟和绕过得难度

参考资料

MD5反查询