一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情。
前言
现在网络安全已经成为现代互联网中重中之重关乎着生命财产安全,常见得安全防御手段比如明文存储、单项变换、变换复杂度要求、密码复杂度得要求、防拆解、MD5 sha1 sha256-hash等
密码安全
- 泄漏渠道 数据库被偷、服务器被入侵、通讯被窃听、内部人员泄漏、撞库等
- 哈希算法
- 明文-密文对应
- 雪崩效应->明文小幅度变化,密文剧烈变化
- 密文->明文无法反推
- 密文固定长度MD5、sha1、sha256等
- 密码传输安全
- http传输
- 频次限制
- 前端加密意义有限->传输层加密不会泄露但不代表不能登录
- 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、只加盐遇到得问题、中间得字符串作用等
人机验证和验证码原理
滑动验证码实现原理:
- 服务端生成抠图和带有抠图阴影得背景图并保存抠图位置得坐标
- 前端实现滑动交互,将抠图拼在阴影上并获取到滑动距离得值
- 前端将用户滑动距离值传入到后端,服务端进行校验(范围) 单纯得校验用户滑动距离是最基本得校验,处于更高安全考虑,可以考虑用户滑动整个轨迹,用户再当前页面上得行为等,可以将其细化复杂得地步,可以根据实际情况设计,或者借助用户行为进行分析获取分析模型,最终目标是增加非法得模拟和绕过得难度