PostgreSQL学习之有关身份鉴别的一些小想法
1、拒绝异地登录:psql客户端登录数据库成功后,服务端发回一组随机数,psql将此随机数保存到本地文件,作为下次登录时的凭据(常规认证之后再检查随机数),如果随机数检查不通过,则可能账户被异地登录,服务器有权拒绝登录;
2、拒绝非真人登录:psql客户端登录数据库成功后,服务端发回一组随机数,psql一端必须手动输入此组随机数,以验证是否真人登录;
3、一次一密:假如用户密码为123abc456,用户可以设置自己的密码变换规则,服务端根据变换规则首先逆向变换得到原始密码再进行密码校验,变换规则可以如下:
d+:密码123abc456中的数字部分逐次递增,即123abc456、123abc457、123abc458、...
a+:密码123abc456中的字母部分逐次递增,即123abc456、123abd456、123abe456、...
a>>:密码123abc456中的字母部分循环右移,即123abc456、123cab456、123bca456、...
d>>:密码123abc456中的数字部分循环右移,即123abc456、612cab345、561bca234、...
>>:全部数字和字母循环右移,......
以d+规则为例:
第一次登陆时,服务端接收到密码123abc456,不做变换,认证通过;服务端记下登录次数1;
第二次登陆时,服务端接收到密码123abc457,服务端根据记录的登录次数1,将123abc457变换一次得到123abc456,认证通过;服务端记下登录次数2;
第三次登陆时,服务端接收到密码123abc458,服务端根据记录的登录次数2,将123abc458变换一次得到123abc456,认证通过;服务端记下登录次数3;
......
4、密码混淆:客户端登录时,服务端首先发回密码变换规则,如352461,则将密码按此规则混淆后输入,如密码为abcdef,则根据变换规则应该输入的密码为cebdfa。