
被黑客攻击,登录流程怎么安全?
用户登录是系统中最重要的功能之一。如果登录成功,您可以拥有系统的相关使用权限。因此,有必要设计一个安全的登录过程。保护用户账户不被黑客窃取不仅是为了保护用户的基本利益,也是为了保护网站的声誉和业务发展。

流程安全性
HTTPS协议必须用于安全登录过程。HTTPS协议安全性高,可以保证数据传输过程的安全。虽然有fidler等代理可以截取数据,但一般没有用户的配合是无法截取的。HTTPS证书可以在阿里云申请,个人网站可以直接使用免费版,非常方便。nginx和Springboot的配置也很简单。
登录必须有人机验证机制,以防止黑客以暴力破解的方式尝试登录。图片验证码通常可以使用,图片需要添加干扰线,使用不同的字体和大小写来提高识别难度。目前,图片验证码可以通过编码平台和人工智能识别,但成本相对较高。一些大型网站已经使用了新的验证方法,如拖动鼠标移动滑块或纠正倾斜图片,攻击仍然相对困难。
一定要注意XSSS的预防、CSRF攻击。通过在目标网站上注入恶意脚本,攻击者可以在其他用户的浏览器上操作脚本。攻击者可以通过使用这些恶意脚本获取用户的敏感信息。用户提交的任何数据都应保持怀疑态度,不能完全信任,过滤过滤,拦截。国内大型网站,比如淘宝,也有CSRF漏洞,说明大家对这种攻击形式还是比较陌生的。
后台登录代码应注意防止SQL注入攻击。如果黑客提交passwordor1=1,而后台没有做SQL防注入,只需查询数据是否存在,攻击可能会成功。所以or1=1有一个响亮的名字,叫做通用密码。恐怕每个人在做大学作业时都有这个漏洞。
登录成功后,返回的cookie应设置httponly、secure,这样就不可能通过js脚本获得cookie,可以防止跨站攻击,增加爬虫程序的难度。cookie的有效期根据业务需要确定,尽量短一些。我以前做过爬虫,爬网银的时候处理过很多这样的cookie,比普通cookie复杂多了。
如果您使用手机短信登录,您必须控制验证码的及时性,即验证码一次有效5分钟,只能在一分钟内发送一次。如有必要,您可以单独登录。其他设备登录后,设备将自动失效。您还可以使用微信登录等第三方授权登录接口,优化用户登录体验,提高安全性。

密码安全性
尽量提高密码强度。一般来说,如果长度超过8位,则必须包含数字、小写字母和大写字母。建议用户使用特殊字符。
重置密码,最好在一定时间内通过电子邮件发送有效的重置链接,或手机短信验证码,甚至两者的结合。一些安全要求特别高的场景,如股票交易软件,通过算法设计了一个单独的动态密码应用程序来比较动态密码。在今天的隐私时代,密码保护问题可能不那么安全。
用户名密码错误提示模糊。无论是用户名还是密码错误,都要统一提示“用户名或密码错误”,不要给用户明确的提示。这将使忘记用户名的用户在一定程度上难以登录。您可以帮助用户名检索机制或允许使用电子邮件和手机号码登录。
不要将用户名和密码保存在浏览器中,md5不能加密。如果您想自动登录,您可以保存RSA加密的密文,并通过cookie提交密文进行分析自动登录。md5或md5(md5)今天已经不安全了,黑客彩虹表可能已经覆盖了大部分数据。

保护好用户
必须对密码进行加密。当年CSDN使用明文存储密码时,用户密码被完全公开,给用户和网站带来了很大的风险。基于彩虹表可以很容易地破解md5、对于sha1等古代算法的密文,建议至少使用sha256及以后的算法,并在加密过程中加盐。盐的长度最好在64位以上。如果条件允许,为每个用户设计一个独特的盐值将大大提高安全性。
数据库应保留用户的历史密码。修改密码时,不能与前几次相同。如果黑客掌握了历史密码,用户更改后也可能正好匹配。参考谷歌帐户登录,密码修改不能与6个月前的密码相同。
保留用户的登录记录。需要时间和ip。如果ip和以前有很大的区别,可以通过邮箱、短信、站内信等提示用户修改密码。用户长时间没有登录,最好强制修改密码,不要重复历史密码。
如果您在短时间内登录失败,请锁定用户。例如,如果您失败5次,您可以锁定1小时、8小时和24小时。锁定后,用户可以通过注册电子邮件或手机短信解锁,但解锁次数也应在一天内限制。
即使用户登录并进行重要操作,用户也需要重新输入密码。例如,修改密码、绑定电子邮件、密码保护问题、消费行为等,可以防止黑客在XSS攻击后修改重要数据。
总结
本文梳理了设计登录过程中需要考虑的一些关键点。世界上没有绝对安全的系统。有价值的网站和应用程序是黑客攻击的关键对象。在工作中,我们必须注意安全问题,及时修复漏洞。还应考虑网站数据的重要性,并采取适当的保护措施。
微.信.搜.一.搜索程序之心,每周一三五原创更新。
推荐阅读
如何成为每天写业务代码的程序员的技术大牛?
走向卓越,领域驱动设计的思维方式




















