发表于: 2018-01-26 00:31:47
1 643
今天完成的事情:
1 重新梳理登录和注册的逻辑
原来是用户名注册,现在是 用户名+邮件/手机号 注册。用户名 和 邮件/手机号 是唯一字段。
2 用手机号注册:
多了一个短信验证的过程,这里一定要注意,手机要验证要先输入验证码,验证码越难越不容易被攻击,有人用不同ip、不同手机号来攻击,让你一直发验证码,太坑了。
验证码:
图片验证码:spring自带,防攻击不行,防君子不妨小人啊,我记得以前在一个爬虫群里,有人用图像识别,两三下搞定图片验证码,还有各种打码平台。。。。
拖动验证码(极验验证码):以哔哩哔哩为例,这个好像很流行,需要js发送一个数据到后端,数据最好加密下比如用json web token加密下:
我就会一点js,这个怕是写不出来了,但是我会copy,O(∩_∩)O哈哈~。
12306的验证码:神一般的验证码,带逻辑判断,我就想问,还有谁,还有谁,还有谁。。。。O(∩_∩)O哈哈~ ,但是知乎上https://www.zhihu.com/question/28795373,好像也不难破解
知乎的验证码:点击倒着的字符,或正常的字符。
更多验证码方案请看知乎连接https://www.zhihu.com/topic/19560490/hot
自己写一套方案,变态方案多的是,就是对用户不太友好。
知乎看了半天,还是用图片验证码吧。
3 用邮箱注册
如果不想经过第三方的邮箱服务,就用oracle 的 JavaMail 自己在提供邮件服务。
或者使用Nginx的邮件模块(需要自行编译)
邮箱注册,也要发送一个注册连接,可以用 域名+注册路径+注册信息的jwt加密内容 作为连接,用户点击后,验证jwt加密内容。
验证码:邮箱验证码不用像手机那么严格,一般用图片验证就行。
4 登录,还是按密码登录
应该多一个重置密码的功能,不想写了
短信
短信验证码是要花钱的,免费的竟然要实名制。o(* ̄) ̄*)o呵呵
我还是花两块钱吧。
邮件
我就用JavaMail了,简单点,用Nginx性能理论上更高,^_^,我就不试了。
其他第三方的api,凡是要经过它的服务器,一概不考虑,根本没有安全性可言。
邮件发送的是一个连接:
域名+注册的URL+加密的信息
用json web token加密,加密内容为用户名,邮箱地址,操作类型(注册操作),因为如果有改密码的操作,也是这么验证。
数据用jQuery来发,听说现在jQuery用的少了,不管那么多了。先把功能实现。
参考:
http://blog.csdn.net/xietansheng/article/details/51673073
5 图片
暂时没想好
明天计划的事情:
完成邮箱和手机号注册
遇到的问题:
只写了一个大概的步骤,代码待完善
收获:
验证码是道高一尺,魔高一丈,程序员何苦难为程序员。
评论