直接一个密码不就可以了
如果可以做到每个人的密码是唯一的,登录的时候输入用户名就是多余的操作了
当然,我只是说登录的时候可以不输入,并没有说用户名本身没必要
所以,我看来唯一的难点就是密码唯一,其实做到这点也不会很难
我也考虑过撞库的情景,其实考虑下也不成立,撞(密码)库和撞(用户名+密码)库难度差异真的很大吗?
好吧,换一个情景,就是登录的时候只有一个框框,用户名和密码一起输入,把这里的(用户名和密码)当作(密码)不可以吗?--->仅仅是举个例子
你们怎么看这个问题的呢?
1
niinaranpo 2015-08-14 00:37:09 +08:00
如果只是有密码,那么我注册的时候提醒我已被注册,那么我不就是知道了别人的密码。。。
|
2
intellectual 2015-08-14 00:39:57 +08:00
要确定你是谁啊,你不说你是谁我咋知道你是谁呢?如果我真猜到了,你害怕不?
|
3
zhicheng 2015-08-14 00:40:11 +08:00
用户名存明文,密码存摘要,此贴已结。
|
4
int64ago OP @niinaranpo 是啊,这就是我说的密码唯一难点,注册的时候系统返回随即密码(当然不是靠人来记忆)
|
5
int64ago OP @intellectual 用户名是存在的,只是不在登录的时候输入而已
|
6
intellectual 2015-08-14 00:41:38 +08:00
密码为一好想法,可能实现起来有点远吧,那还不如别说是密码改说ID的了
如果是ID了,那还挺恐怖的诶 |
7
int64ago OP @intellectual 我想起团购刚出来的时候,券基本都是用户名+密码的形式发放
现在就基本一个兑换用的号 |
8
leavic 2015-08-14 00:44:19 +08:00
光有key,没有value,那怎么查找。一个论坛里面,@后面不接用户名都直接@ 密码?
|
9
intellectual 2015-08-14 00:44:33 +08:00
@int64ago 现在有些界面貌似是这样,部分情况下出现这样的界面,比如Google上触发安全操作之类相关,但是这不是第一次登陆的时候啊,他们这时候的界面还是表示一下当前用户的身份的
|
10
leavic 2015-08-14 00:44:37 +08:00
错了,光有value,没有key。
|
11
Perry 2015-08-14 00:45:39 +08:00 via iPhone
1 楼已经彻底终结了
撞密码和撞用户名密码完全不是一个级别的 |
12
intellectual 2015-08-14 00:46:39 +08:00
@int64ago 那不是绑着其他信息了么,例如手机号啊啥的
|
13
int64ago OP @intellectual 肯定啊,注册的时候肯定需要邮箱或者手机,我一开始就强调是的登录过程
|
14
intellectual 2015-08-14 00:53:00 +08:00
说不清,感觉你的观点不停的在变
|
15
eary 2015-08-14 00:54:18 +08:00
撞密码那感觉太容易了
|
16
CuminLo 2015-08-14 01:08:19 +08:00
咋一看觉得是挺方便的,但是用户名+密码已经被大家给习惯了,突然来个只要密码,我就会觉得这个网站有问题。
|
17
Strikeactor 2015-08-14 01:12:54 +08:00
密码短了吧,别说故意,不小心输错一个可能都进别人帐户了
密码长了吧,你这用户体验估计是负的。。 |
18
yeyeye 2015-08-14 01:13:52 +08:00 2
问这么多为什么干嘛 解释这么多为什么干嘛
你现在去做一个站,就这样实现,然后看看是骂得多还是赞得多,实现过程中你才会发现自己的想法有多反人类。 你可以反人类,但是别人不反人类也不是错啊 |
19
msg7086 2015-08-14 01:17:13 +08:00 via Android
而且这种设计也不是没有。
天凤就是凭密码登录,密码是随机生成,忘了密码就重练吧。 |
20
ETiV 2015-08-14 01:22:25 +08:00 via iPhone
用户名的作用是授权,密码的作用是验证
|
21
em70 2015-08-14 01:31:35 +08:00 via Android
干嘛非得是字符串密码,用指纹识别就能达到LZ的废除用户名的目的
|
22
Yvette 2015-08-14 01:31:59 +08:00
Gmail 就是这么做的,但是有条件限制
|
23
datou552211 2015-08-14 01:41:40 +08:00 via iPhone
公匙私匙
|
24
lightening 2015-08-14 01:46:17 +08:00
@int64ago 你说的这种系统随机生成的 “密码” 叫 token,两边都是机器的地方有的就是用 token 验证身份的。不过,现在密码主要还是给人用的,人要能自己设置密码,那就必须得有用户名这个东西了。
|
25
ljbha007 2015-08-14 01:59:00 +08:00
随便注册个号 找出你密码命名规则 然后暴力破解 随随便便几百万个帐号到手
|
26
dndx 2015-08-14 01:59:48 +08:00
LZ 说的这种情况技术上有可能,但是密码显然不能让用户自己输了。
128 位的随机生成的 Key 就可以了。 |
27
yangqi 2015-08-14 02:09:46 +08:00
密码是用来验证用户的,不能用来定位用户的,根本没办法的啊。另外一个输入框的情景,你怎么分割用户名和密码?
|
28
xmoon 2015-08-14 02:17:51 +08:00
这已经不是密码 而是像cookie了 你这和直接保存cookie有啥区别?
|
29
xierch 2015-08-14 02:30:10 +08:00
各种充值卡就是嘛..
要用户设置密码也成,想个办法计算「密码相似度」,禁止两个用户使用过于相似的密码 |
30
xierch 2015-08-14 02:40:20 +08:00
比如说规定密码最少 16 位
定义前 8 位相同的密码为「相似」 (实现上,可以前 8 位与其余密码分开储存 这就等效于 8 位用户名 + 8 位及以上密码的常规方案了,至少没有安全问题 |
31
konakona 2015-08-14 02:40:46 +08:00
你也可以刷脸啊
|
32
yangqi 2015-08-14 02:51:52 +08:00
|
33
xierch 2015-08-14 02:55:53 +08:00
哦我想了一下,好像也不太对 233
限制前 X 位密码不能相同,反而降低了安全性(可以分段试密码了) 唯一的好处就是解决了如何加 salt hash 的问题 |
34
pimin 2015-08-14 02:59:34 +08:00 1
与其说免用户名登陆不如说是免密码登陆。
主要问题是是否能解决用户输入的问题。 当前基本的输入方案还是键盘,自定义用户名密码便于记忆,输入。 如果没有可以解决键盘是基本输入的成熟方案,基本上也不存在挑战当前用户名\密码体系的可能。 至于lastpass/keepass之类只是解决了记忆的问题,并没有解决输入方式的问题。 生物验证可能是一个方向,但是我觉得太长远了才能普及到方方面面。 更倾向于通过统一标准认证,比如browse-userid,假设基于所有浏览器都支持一个ID,这个ID基于登录用户。比如Chrome/Firefox用户通过同一个邮箱登录之后,产生相同的ID,这个ID可以提供给网站检,当然这个ID只能是用作身份识别,鉴权需要另外管理的。 |
35
xierch 2015-08-14 03:01:28 +08:00
@yangqi 我刚才的想法是,8 位用户名 + 8 位密码 与 16 位密码之间没有区别
甚至更安全,因为「用户名」也要试了... 不过其实不对, 8 + 8 的情况,用户会使用两套逻辑来设置用户名和密码... 如果把 16 位密码看成一个整体,很可能更容易设置出弱密码 |
36
pimin 2015-08-14 03:05:19 +08:00
|
37
yurited 2015-08-14 03:20:08 +08:00
不应该存储密码,这样也就无法知道用户的新密码是否和旧密码重复
|
38
Huadb 2015-08-14 05:18:27 +08:00 via iPhone
手机注册呗,密码都不需要,登陆的时候发你一个验证码
|
39
welly 2015-08-14 06:58:49 +08:00 via iPhone
过来支持一下。估计是用1password用出的习惯
|
40
kalintw 2015-08-14 07:09:35 +08:00
好比:楼主有个身份证号码,还要名字干嘛?
|
41
zado 2015-08-14 07:49:03 +08:00
顺便做个广告,我的 http://zxxq.sinaapp.com/ 就是这么设计的,直接密码就可以登录,不需要输入用户名。当然,不同的密码代表不同的用户。相同的用户名,不同的密码,也代表不同的用户......
|
42
zhujinliang 2015-08-14 07:49:29 +08:00 via iPhone
天凤麻将就是类似的,不过人家那个框叫昵称,如果你没注册,随便输个名,对战时就是这个名,如果你注册了,系统会给你串代码,登陆时昵称里要填这个代码
|
43
msg7086 2015-08-14 08:20:38 +08:00
@zhujinliang 没注册不是直接NN大人么
|
44
dikcen 2015-08-14 08:27:05 +08:00
其实啊,我也有过相同的想法。可是,如果密码(一组包括用户名和密码的字符串)忘了怎么办,类似身份证丢了人怎么办?所以,身份是身份,身份证明是身份证明,两者还是应该分开的。
|
45
iloahz 2015-08-14 08:28:52 +08:00
这种方案的问题的根本不在于“撞密码更容易”嘛。。。
|
46
wy315700 2015-08-14 08:32:00 +08:00
username是身份认证
password是访问控制 |
47
uleh 2015-08-14 08:37:24 +08:00 via iPhone
lz 的想法完全可行,但是现阶段由于各种成本问题无法普及。
解决方案可以是类似网银的电子证书、u盾,或者苹果的 Touch ID 等等。 |
48
imn1 2015-08-14 08:39:02 +08:00 1
完全是开国际大玩笑~
密码区别用户是极不安全的,绝对!!!!!!!!!!!!!!!!!!!!!! 超级重要的事情要加多几个感叹号 因为你这样几乎不存在输入“错误”的密码 假如我的密码是 abcdefghijklmnopqrstuvwxyz 另一个完全陌生人的密码是 abcdefghijklmnopqrstuvwxy_ 我直接输入后者,贵站如何判断我不是这个陌生人?? 你这思维跟支付宝一个德行! 不能判断的话,换言之我用“错误”的密码,就登入了别人的帐号了!!!!!!!!!!!!! 这样的话,黑客是一定会主动“输入错误”的 |
49
jugelizi 2015-08-14 08:41:16 +08:00 1
啧啧 你咋这么聪明呢
|
51
realpg 2015-08-14 08:42:07 +08:00
我觉得,楼主你说的这种东西,叫客户端证书……
|
52
zhjits 2015-08-14 08:42:31 +08:00
用户名和密码一起输入,撞库的可能性远大于分开输入。
ABCDEF 可以对应 用户名 A,密码 BCDEF;用户名 AB,密码 CDEF 等状态。 |
55
cc7756789 2015-08-14 08:55:46 +08:00
首先:
网站怎么鉴别一个用户的身份,如果你改了密码的话? 注册时自动给密码分配一个用户名?那么和用户名、密码的机制有区别吗? 如果数据库被盗了,盗窃者把你密码改了,你的帐号是不是就凭空消失了? 这个产品密码输错几次限制登录?如果像银行一样输错3次限制登录,那么你自己输错了怎么办? 如果没有太多的限时,是否一个几十行人人都会写的Python脚本就可以无限测试密码? 如果我恰好输错了我的密码,但是输对了你的密码,那这个网站安全机制是逗B吗? 如果我输入注册时候输入密码,告诉我此密码已被分配。。。。 你的想法应该是类似于视网膜,指纹识别,但那个是人特有的并且很难复制的东西。而密码不是,即使用户名和密码都有的账户都可能被枚举出,别说只有一个密码了。 |
56
anyforever 2015-08-14 08:57:20 +08:00
如果用生物指纹的话,那就可以实现你这个想法了。
可以看下洋葱,奶罩的新项目 |
57
zdkmygod 2015-08-14 08:58:12 +08:00
最主要还是安全性不够吧。
|
58
binjoo 2015-08-14 08:59:56 +08:00
|
62
tobyxdd 2015-08-14 09:07:34 +08:00 via Android
有些tplink路由的web管理就是这样的。。但那不存在不同账户的问题
|
63
lishali12345 2015-08-14 09:10:21 +08:00
@anyforever 恩,这个项目的想法不错,未来应该空间很大,安全是一个新的基础服务成长点
|
64
popok 2015-08-14 09:12:45 +08:00 via iPhone
这种情况只适合注册时系统自动生成随机密码,且密码一部分是做校验用,看那种手机充值卡就行。
不适合用户自定义密码,不然输错一位就可能进别人账户了。 |
65
sujin190 2015-08-14 09:18:05 +08:00
如果用户量比较大,像微信,那么对于人可记忆的范围来说恐怕随便输入一个什么就登陆了某人的账号了吧
|
66
qinxg 2015-08-14 09:22:36 +08:00
觉得楼主说的更像是AccessToken
但获取AccessToken的前提是完成了身份验证 所有又绕回去了 |
67
imn1 2015-08-14 09:31:32 +08:00
@wy315700
这个趋势没问题,我google账户也是这样选择相信独特设备的(不需二次认证) 问题是必须账户持有人确认他相信那个设备,而不是强制相信!!!!!!!!!!!!!!!!! 如果设备是支付宝出品的,自动相信设备没问题,例如什么盾,但手机不是 算了,不歪楼了,支付宝的问题其他地方讨论吧 |
68
chinawrj 2015-08-14 09:48:06 +08:00
密码可能是一样的,我觉得。。。你可以检测用户名是否重复。那是不是也要检测一样密码是不是重复呢?太搞笑了这样
|
69
F1ReKing 2015-08-14 09:57:48 +08:00
脑洞大开啊
|
70
UnderIndex 2015-08-14 09:58:04 +08:00
亚马逊的ssh登陆就是给你一个pem文件(相当于一个密码)。类似还有很多
|
71
otakustay 2015-08-14 10:02:11 +08:00
楼主的想法一点也没错,Touch ID不就是这么个东西吗
很多人反对的原因是密码冲突,其理论是(用户名+密码)的冲突率远小于(密码)单项的冲突率 但是当密码并不是人为输入,而是系统生成的时候,两者的冲突率虽然有差距但可以都控制在一个“几乎不可能冲突”的范围内,完全能合理应用 |
72
pythoner 2015-08-14 10:03:10 +08:00
楼主你自己动手实践一下不就什么都明白了
不会编程语言?学啊! 不懂数据库?学啊! |
73
unknownservice 2015-08-14 10:09:47 +08:00
脑洞太大不知道如何吐槽,你能不能做一个出来大家看看再谈下面的?
|
74
imn1 2015-08-14 10:13:54 +08:00
Login Password:1
You are logged in as imn1 没钱?这抠门的家伙~走 You are logged out Login Password:2 You are logged in as 程序员 一块钱?程序员这么穷啊?走 You are logged out …… Login Password:dkwejs$&703VJND> You are logged in as int64ago 哇!这个是大富豪(口水淌一地)~ …… |
75
yyork 2015-08-14 10:17:18 +08:00 via iPad
n和n平方的差别
|
76
qecxp 2015-08-14 10:17:45 +08:00
浪费时间,block
|
77
linescape 2015-08-14 10:27:07 +08:00
除非密码是系统生成的,且不能更改,像cdkey一样
|
78
jarlyyn 2015-08-14 10:30:06 +08:00
楼主万一密码忘记的话准备怎么找回》
|
79
int64ago OP |
80
publicID321 2015-08-14 10:36:26 +08:00 1
LZ 说的这种登录方式(仅用一个密码就可以)是存在的:
https://blockchain.info/wallet/login |
81
zjf 2015-08-14 10:50:03 +08:00
Dollars...
|
82
publicID321 2015-08-14 11:10:54 +08:00 1
你可以打开
https://blockchain.info/wallet/login (一个比特币钱包的网站) 然后在 密码的地方输入 df4b1055-3ee2-4846-a5db-3fb8e53823d7 登录即可 [0]: 这的确是用一个密码来登录。不需要你输入用户名,也不需要你记忆用户名(因为根本不是涉及用户名) [1]: 它相当于二次验证:用一个密码 xxx-xxx-xxx-xxx ,来激发二次验证(给你的邮箱发邮件,只有能进入你的邮箱的人才能查看 which is basically you ),若验证成功则可登入。 [2]: 此处,二次验证的激发器是你的个人邮箱(用你的邮箱做二次验证,而不是 Google Authenticator 这种 动态密码的高级玩意 ) [3]: 如果换个角度,把传统的 「用户名-密码」看作静态密码,把 中国移动的短信密码 或 Google Authenticator 那种 当作动态密码,那么 LZ 说的这个办法 就相当于半动态密码。 安全性:动态密码 > 半动态密码 > 静态密码。 [4]: 方便性是相反的。方便性:动态密码 < 半动态密码 < 静态密码。 [5]: 破译和撞库的难度: 破解难度:动态密码 >> 半动态密码 > 静态密码 [6]: 其实还有一种办法:参考验证邮件链接 验证邮件链接: 假如你想注册一个网站,让你的邮箱作为ID,在每次注册网站之初,大部分网站都会给你的邮箱发一个邮件,让你验证邮箱,邮件里有一个链接,点这个链接就可以验证成功;必须在1天点击那个验证邮箱的链接,否则过期就失效了 这种 验证链接 就可以作为登录器啊: 1. 在登录某网站的时候,你输入你的 密码 ( password, token, identifier ) 2. 某网站给你的邮箱发一封电子邮件,邮件里包括了一个链接,点这个链接就可以 以 logged in 的状态进入网站 3. 这个链接会在 5 分钟内自动失效 4. 你登录网站之后,如果无操作 5 分钟,则自动记录为 logged out 状态 P.S. df4b1055-3ee2-4846-a5db-3fb8e53823d7 这串东西来自于网页 http://studybtc.com/2014/03/12/blockchain-info在线钱包使用方法/ |
83
publicID321 2015-08-14 11:21:27 +08:00
网站的数据库里,只有 xxx-xxx-xxx-xxx ~ [email protected] ,根本没有和「登录凭证」有关的栏位。
即使被盗被脱库被公开,唯一泄露的就是 [email protected] 如果你没有关于「登录凭证」的设计,那么你的网站就永不怕黑客来脱库。当然安全性是高的、代价是方便性是低的。 |
84
imn1 2015-08-14 11:36:52 +08:00 1
我觉得你还是进一步把你的设想阐述清楚好,而不是一句“V2 风气”
觉得我激动可以不理,但其他理智的人还很多,我不喜欢block,因为我觉得人与人大部分问题只是沟通不畅,如果连沟通都跳过了,那就只剩下互相不齿了 以你目前的描述,是难免让人“理解错误”的,因为都没提及身份识别的过程 你附言所提的“lastpass之类”是否就指证书、私匙之类?如果是,那就是另一种情况 例如 PT 种子,就是一种“私匙”,直接使用连密码都省了 使用私匙的情况下,手动输入密码反而成为二步验证,更安全了,性质完全不同 |
85
anubiskong 2015-08-14 11:44:00 +08:00
你们这帮逗逼, 我看了30多层楼的评论, 真开始为了v2ex的用户质量担心了
|
86
PERFECTCN 2015-08-14 11:56:18 +08:00
Active Directory
一直致力于打造这样的情形 |
87
dai269619118 2015-08-14 11:58:46 +08:00
@anubiskong 是啊 ls逗逼真多 说的好像lz做错了什么事情一样的
|
88
ysoserious 2015-08-14 12:10:53 +08:00
@int64ago 团购你会不会一个个号码去试?密码你想盗号的话 会不会一个个去试?
|
89
int64ago OP @borlee2567 如果密码是随机的且生成的方式正确,想试出来很难
可能大家很不习惯只有一个“密码”的登录方式(你们担心的那些问题我都懂,但是是可以规避的),但是如果是 LastPass 或者 1Password 用户,很可能有过这样想法的人就多一点了 |
90
crazycen 2015-08-14 12:27:33 +08:00 via Android
忘记密码的时候怎么办呢?
|
91
ChanneW 2015-08-14 12:33:37 +08:00
用指纹、掌纹,视网膜,脸,作为用户名的时候就可以只输密码了
|
92
wclebb 2015-08-14 12:38:14 +08:00 1
其实我觉得可以有一个密码。5
这个密码叫:用户名密码。 什么意思呢? 比如一个框,里面写着:用户名+密码。 比如用户名我的 wclebb 然后我的密码是 ABCD1234 那么用户名密码:wclebbABCD1234 当然要改密码的话只能改 ABCD1234了,当然用户名可以改,前提是可以允许改。 一方面,这样的密码更方便,更好用,减少频繁使用鼠标或 Tab ,第二方面体验和安全兼有。 上面有个人说:abcdef……xyz 陌生人:abcdef……xy_ 前提是,用户名必须不一样,那么密码即使一样也构成不了雷同密码的存在,从而完成了第二方面体验和安全兼有的存在。 想来想去,这不过是把两个框合并为一个框而已…… 现有目前的技术,应该很简单吧……(别揍我,我是平面设计!) |
95
tinyhill 2015-08-14 12:44:32 +08:00
要不要用户名,密码根本在于如何确定用户的唯一性,并且无法让别人猜解。
|
96
Valyrian 2015-08-14 12:46:37 +08:00 1
楼主的思路不错,个人觉得可以这么搞:
0. 选择一个escape字符,比如星号"*" 1. 注册时需要用户名(需要唯一)和密码(不需要唯一) 2. 注册后返回字符串:s = encrypt(escape(username) + "*" + escape(password), public_key),用户可以保存在last pass、1password里。(escape后的username/password里不会出现星号,所以星号可以安全的当做分隔符用。) 3. 登录时用户提交这个字符串 s,可以解码为用户名,密码 (username, password) = decrypt(s, private_key)。(先用private_key解码,再按星号拆为username 和 password,最后在unescape。) 缺点就是返回的字符串不好记 缺点就是字符串不好记。。 |
97
wclebb 2015-08-14 12:52:06 +08:00
@cnnblike 那也概率太低了,概率这么低的情况下用户名加个 A 和密码还能进
意味着,即使两个框用户名和密码分开,输入不也是一样登陆上去了嘛? 我只不过是把两个框合并了而已。 比如:abcd 用户名,不小心多写 e,但恰好这个用户名也和我一样,1Password随机密码i96mHfa*FJTsNzor&DNj 我的乖乖,还能碰在一起?不买彩票多可惜。 退一万步讲,即使密码:123456789 那……abcd123456789;abcde123456789 谁叫你密码这么简单……有没有密码都差不多。 |
98
takashiki 2015-08-14 12:54:36 +08:00 1
楼主的思路其实和只要有用户名不用密码就能登录其实没本质区别吧
|
99
fluyy 2015-08-14 13:20:48 +08:00 via Android
安全打击怎么做?
|
100
zander 2015-08-14 13:23:32 +08:00
OpenID
|