用户登录是系统中最重要的功能之登录成功就能拥有系统的相关使用权限。所以设计一个安全的登录流程是十分必要的。保护用户账号不被黑客窃取,既是在保护用户的基本利益,更是在保护网站的信誉和业务发展。
流程安全性
安全的登录流程必须使用HTTPS协议。HTTPS协议具有较高的安全性,可以保证数据传输过程的安全。虽然有fiddler等代理方式可以截取数据,但一般情况下没有用户的配合也无法截取。HTTPS证书可以在阿里云申请,个人站点可以直接用免费版,非常方便。nginx和SpringBoot的配置也非常简单。
登录一定要有人机验证机制,可以防止黑客以暴力破解的方式尝试登录。通常可以用片验证码,并且片要加干扰线,使用不同的字体、大小写提高识别难度。目前有打码平台和AI方式可以识别片验证码,但是成本比较高。一些大型网站已经在使用新的验证方式,比如拖动鼠标移动滑块或者把一个倾斜的片扶正,攻击的难度还是比较高的。
一定要注意防范XSS、CSRF攻击。攻击者通过在目标网站上注入恶意脚本,可以在其他用户的浏览器上运行脚本。利用这些恶意脚本,攻击者可获取用户的敏感信息。用户提交的任何数据都要保持怀疑态度,不能完全信任,该过滤就过滤,该拦截就拦截。国内大型网站,比如淘宝也存在过CSRF漏洞,可见大家对这种攻击形式还比较陌生。
后台登录代码要注意防范SQL注入攻击。如果黑客提交passwordor1=1而后台没做SQL防注入,只是查询下数据是否存在,有可能就攻击成功了。所以or1=1有个响亮的名字,叫万能密码。恐怕大家在做大学作业的时候,都有这个漏洞吧。
登录成功后,返回的cookie要设置httponly、secure,这样就无法通过js脚本获取cookie,可以防止跨站攻击,增加爬虫程序的难度。cookie有效期根据业务需求决定,尽量短一些。曾经我也做过爬虫,爬网银的时候就处理过很多这样的cookie,比普通cookie复杂很多。
如果使用手机短信登录,一定要控制验证码的时效性,即验证码一次有效5分钟,一分钟内只能发送一次。有必要时可以单点登录,其他设备登录后,本设备自动失效。也可以使用第三方授权登录接口,如微信登录等,优化用户登录体验,安全性更好。
密码安全性
尽量提升密码强度。一般来说,长度要8位以上,必须同时包含数字、小写字母、大写字母,建议用户使用特殊字符。
用户名密码错误提示含糊一些。无论是用户名还是密码错误,统一提示“用户名或密码错误”,不要给用户明确的提示。这样会在一定程度上让忘记用户名的用户难以登录,可以辅助一个用户名找回机制或允许使用邮箱、手机号进行登录。
不要在浏览器中明文保存用户名、密码,md5加密也不行。如果要自动登录,可以保存RSA加密后的密文,通过cookie提交密文进行解析来自动登录。md5或者md5在今天已经不安全了,黑客的彩虹表可能已经覆盖了大多数数据了。
保护好用户
密码落库必须加密。CSDN当年使用明文存储密码导致被脱裤后完全公开了用户密码,给用户和网站带来了极大的风险。基于彩虹表能够很方便地破解mdsha1等古老算法的密文,建议至少使用sha256及以后的算法,并且加密过程加盐。盐的长度最好也要在64位以上。如果条件允许,给每个用户设计一个独有的盐值,将极大提升安全性。
保留用户的登录记录。时间、ip都需要。如果本次ip和以前的有较大的差别,可以通过邮箱、短信、站内信等向用户提示,建议用户修改密码。用户长时间没有登录,后续再登录的时候最好强制修改密码,并且和历史密码不重复。
短时间内登录失败,要锁定用户。比如失败5次可以锁定1小时,再次失败锁定8小时,又失败锁定24小时。锁定后,用户可以通过注册邮箱或手机短信实现解锁,但一天内也要限制解锁次数。
即使在用户登录后,进行重要操作的时候,也要求用户重新输入一次密码。比如修改密码、修改绑定邮箱、修改密码保护问题、有消费行为等,可以防止用户被XSS攻击后黑客修改重要数据。
本文梳理了设计登录流程需要考虑的一些关键点。世界上没有绝对安全的系统,有价值的网站和应用都是黑客攻击的重点对象。工作中务必重视安全问题,发现漏洞及时修复。也要考虑网站数据的重要程度,采取合适的防护措施。
最后
为了帮助大家更好的学习网络安全,小编给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,所有资料共282G,朋友们如果有需要全套网络安全入门+进阶学习资源包,可以点击免费领取~
CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享
网络安全源码合集+工具包网络安全面试题最后就是大家最关心的网络安全面试题板块所有资料共282G,朋友们如果有需要全套网络安全入门+进阶学习资源包,可以点击免费领取~
网安大礼包:《&网络安全入门&进阶学习资源包》免费分享
视频配套资料&国内外网安书籍、文档
网安大礼包:《网络安全入门&进阶学习资源包》免费分享
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点