第9章 认证与会话管理

9.1 who am i?

认证包含了身份和身份认证两层含义。

q  身份—我是谁?

q  身份认证—这就是我。

认证的目的就是为了认出用户是谁?而授权的目的是为了决定用户能够做什么。

认证实际上就是一个验证凭证的过程。

9.2 密码的那些事儿

一般为了安全与用户体验性,采用“双因素”验证的比较多,例如支付中的密码和手机动态密钥。

我认为在用户注册的时候应该检测一下用户使用的是否是弱密码。这就代表着我们需要在系统中建立一套“弱密码表”,弱密码表如下。

000000;c984aed014aec7623a54f0591da07a85fd4b762d
000000000;0f58d5a5515f1a8a9d179aa58858b67b2f8a3388
0000000000;8104ba1dc0409b259f487ed07db477c38f205a30
111111;3d4f2bf07dc1be38b20cd6e46949a1071f9d0e3d
11111111;a642a77abd7d4f51bf9226ceaf891fcbb5b299b8
111111111;3f196cfb6c4cffe3002c0495a1bc822521b6aa36
112233;3acd0be86de7dcccdbf91b20f94a68cea535922d
11223344;b986415c93241513d33d01fcf532a6c47ac4f3ee
123123;601f1889667efaebb33b8c12572835da3f027f78
123123123;88ea39439e74fa27c09a4fc0bc8ebe6d00978392
123321;4d9012b4a77a9524d675dad27c3276ab5705e5e8
123456;7c4a8d09ca3762af61e59520943dc26494f8941b
123456a;360e46f15f432af83c77017177a759aba8a58519
12345678;7c222fb2927d828af22f592134e8932480637c0d
123456789;f7c3bc1d808e04732adf679965ccc34ca7ae3441
987654321;bfe54caa6d483cc3887dce9d1b8eb91408f1ea7a
654321;dd5fef9c1c1da1394d6d34b248c51be2ad740840
abcdef;1f8ac10f23c5b5bc1167bda84b833e5c057a77d2
abcdefg;2fb5e13419fc89246865e7a324f476ec624e8740
abcabc;f8c1d87006fbf7e5cc4b026c3138bc046883dc71
abc123;6367c48dd193d56ea7b0baad25b19455e529f5ee
a1b2c3;2f4c5ce01f30865d02b2cc2b60d50b0bc5a1ee75
123qwe;05fe7461c607c33229772d402505601016a7d0ea
qwerty;b1b3773a05c0ed0176787a4f1574ff0075f7521e
qwertyuiop;b0399d2029f64d445bd131ffaa399a42d2f8e7dc
asdfghjkl;5fa339bbbb1eeaced3b52e54f44576aaf0d77d96
zxcvbnm;93ec71b22793a81569c94ca17e4d9c293d8e201f
qweasd;94cd166631d14dab533858b9b47e9584a2ff3f65
admin;d033e22ae348aeb5660fc2140aec35850c4da997
password;5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
p@ssword;36e618512a68721f032470bb0891adef3362cfa9
passwd;30274c47903bd1bac7633bbf09743149ebab805f
iloveyou;ee8d8728f435fd550f83852aabab5234ce1da528
5201314;39693fd4a45b386c28c63100cc930238259891a2
5211314;817fbb7fa898c2b5d494fbd1f46bc6437d1eae33
woaini1314;79cbc25ac7de525cdc27d2977dbf3c0f13f04924
222222;273a0c7bd3c679ba9a6f5d99078e36e85d02b952
333333;77bce9fb18f977ea576bbcd143b2b521073f0cd6
444444;42cfe854913594fe572cb9712a188e829830291f
555555;b7c40b9c66bc88d38a59e554c639d743e77f1b65
666666;1411678a0b9e25ee2f7c8b2f7ac92b6a74b3f9c5
777777;fba9f1c9ae2a8afe7815c9cdd492512622a66302
888888;1f82c942befda29b6ed487a51da199f78fce7f05
999999;1f5523a8f535289b3401b29958d01b2966ed61d2
aaa111;4a0cde71aee7158542d013fc0c9f5acfc735c612
bbb222;6be712a6e73d979726c02a308b3457f9f5cf148e
letmein;b7a875fc1ea228b9061041b7cec4bd3c52ab3ce3
aaaaaa;f7a9e24777ec23212c54d7a350bc5bea5477fdbb
aaaaaaaa;b480c074d6b75947c02681f31c90c668c46bf6b8
abcde12345;61d6504733ca7757e259c644acd085c4dd471019
19216801;c1018a89c6ea96ad0b85f6b96e6a857accd23644
19216811;76baff4a5e6ed84f77bab8160f35646e042e4e1c
1a2b3c4d;b01afc2b077956acc69f99e0b7df1cb70cb01331
1q2w3e4r5t;b80a9aed8af17118e51d4d0c2d7872ae26e2109e
asdfgh;7ab515d12bd2cf431745511ac4ee13fed15ab578
fuckyou;dd2edb87ea9eb7a32fd4057276d3a1fab861c1d5
@163.com;900a0dc861cfb4e8692e2c9e3ac3e402244148e5
@126.com;09b66030ce0e0ce02bf5c9f1acb3d3ed43b03d29
@sina.com;9315152529553e529d7a104749a5091018335c41
@yahoo.cn;45131950280623973e2990a1c712ff7bbac47ef2
@hotmail.com;67f34d4020041d47084e416d2a3b69a41d5004b5
@sohu.com;70cb33735b8f48126644c4b73d5f202b3787d345
@139.com;a3495fafa58826efb7bd72afe7c65037ed8bc3e5
zxc123;d5a1bdf9ce989fd6161063e94b92bdeacb94ed23
a123456;895b317c76b8e504c2fb32dbb4420178f60ce321
a123456789;82e19fa12aab7cfc718a002fc82c0f074bf070e7
1234567890;01b307acba4f54f55aafc33bb06bbbf6ca803e9a
qq123456;1e9c48fedb74c408cfa764c2e6579345ad38b059
abc123456;370194ff6e0f93a7432e16cc9badd9427e8b4e13
123456789a;8bc5de83cf1daf79ed5b2f13f93d7c05d01d0388
147258369;345120426285ff8b1d43653a4d078170b4761f75
12345678910;9048ead9080d9b27d6b2b6ed363cbf8cce795f7f
qq123456789;c62ff83c569e4167f2d4a6d437c37c4c99f62abb
123456789.;ed005b69bc65e50b86efbfa2eee5a9a9522c4a79
7708801314520;32b912e96e3af75977851c4c0ae1ab76fa2342bd
woaini;18f3e922a1d1a9a140efbbe894bc829eeec260d8
5201314520;f33d1c19fca267f74c49d287359e438c25080a13
q123456;6373050ac6f292c7f40103686db60eabe536615a
123456abc;a172ffc990129fe6f68b50f6037c54a1894ee3fd
1233211234567;dd3fdc04319ba92de10e6f4ced669daf40c34774
123123123;88ea39439e74fa27c09a4fc0bc8ebe6d00978392
123456.;76d91c3bdf12cb2a5ed8d590390df02efb77fb91
0123456789;87acec17cd9dcd20a716cc2cf67417b71c8a7016
asd123456;b2b7258d833cda1f75ff068edcbfa93faf899273
aa123456;89e89c17f877ca2821b557f633cec3253b0aa941
135792468;ed0e9283310c98094b1f5c0c42385c7a3c6818da
q123456789;acd7236e31641b4de86fd7af037655976d76c9c6
abcd123456;756de479126e911b6f3400ae686d663d9d26b509
12345678900;545c562a9d01dfaef9fb4e72c14010d2c4862a8b
woaini123;9635549628ffb5028a456b7e381cce375f598be7
zxcvbnm123;b487af41779cffb9572b982e1a0bf83f0eafbe05
w123456;4bd79e74a4e75df4226379434fc60f3274e1f4e3
aini1314;1c9a13456920a7a86a8f3ccf561039f2e4f3f244
abc123456789;33c76f70af66754ca47d19b17da8dc232e125253
1314520520;581cf6ca317edbca904de1540c031f8209beb779
1234567891;64ea0dc7dadd49a337f1ef14815bd3f428141c7d
qwe123456;e0ad1156a8de997c18dd27d85253a963433d8cec
asd123;2891baceeef1652ee698294da0e71ba78a2a4064
1472583690;9de1d8a075935f3d9746cc1419dd16576fdd5b6f
1357924680;33787d9003e53554aa48e7b3a2d2f793edb7d7a0
789456123;4b4b04529d87b5c318702bc1d7689f70b15ef4fc
123456789abc;a63d2f9ac1d341ae389920e6fe5712ca27768a72
z123456;63b597584b223523684957a1646a366f80c1776d
1234567899;fa213fbfd3c4bd1e298a01faee0652ce8aece66e
aaa123456;63a573e536a133d9ce53d63cdefaa3a6ff7a7ef9
abcd1234;7ce0359f12857f2a90c7de465f40a95f01cb5da9
www123456;82d878eae8ed4c9633a85c3ffbc2fe6e08439d5f
123456789q;e4af001202394bea766da25ca5a83adc8dfb1fe1
123abc;4be30d9814c6d4e9800e0d2ea9ec9fb00efa887b
qwe123;c53255317bb11707d0f614696b3ce6f221d0e2f2
w123456789;fdf78847507ea581d669dfb4bb7acdd49f6fd167
7894561230;255f53c62ddcd8771941fe7fc3d316761f204966
123456qq;0213711d8b8773c12c52eaf8b4da9dc479a6f33c
zxc123456;20894d135e5493a4b13adb05545e4327f78ba5a5
123456789qq;a4d1643ef5edd2d052a9a74eb0daebc4bb5601be
qazwsxedc;cbf2510a5f9f7eece23428da7125c06115839e2b
qwerty;b1b3773a05c0ed0176787a4f1574ff0075f7521e
123456..;21e279011385c910548bcfe8449607d66cf079af
1234554321;ece4e6b27cf0a2c5c9d83e44bfd5a71795f8a6e0
123456q;bfff2dd4f1b310eb0dbf593bd83f94dd8d34077e
123456aa;80e126659c008667cb626baef0c86e7b7dd00e20
9876543210;9cd656169600157ec17231dcf0613c94932efcdc
110120119;c611407915728260ac0ab216a71dab84ccedc267
qaz123456;d480bd8b8bdd111efd9f7acf13b8e889c97a8704
qq5201314;d54afcea69f4206f91549578f5f10ae3ba1456aa
123698745;46faecb386d33e643afdabc62393fa7e84f5bf66
as123456;7e02cc3aedfaec1fc5863c6ae846378874218186
5841314520;cdfee1c0470223f479f457b4c36db0028aaaaf67
z123456789;23aa667a74a65343dfe41a015dae1c9208bb972e
a123123;787c8ad9f686d6ae66a053497de9ae15b6b13364
caonima;430dcd10accf33c72ec127813ec7e2c93a697314
a5201314;0638a978a2c43b4d01739436cd7ada21d94d938f
wang123456;341f61d91c70014c2c867be0f3edcd237f04a70d
abcd123;7c3607b8e61bcf1944e9e8503a660f21f4b6f3f1
123456789..;b4d333d3afcb4ab2169709d1f9ee928053818a13
woaini1314520;69f64f206fe9f88e93ac54e6a5ce057a7a0efbee
123456asd;ba3da472cb1a59f523b87f74c4e42c860c2aa5d0
aa123456789;48df1dc02ccb17787d25e40f42c2e721cf200511
741852963;863dae13577340b98c4c247f4a05b204a3543248
a12345678;3dd635a808ddb6dd4b6731f7c409d53dd4b14df2

注:上述弱密码已经经过SHA1加密,原文与密文以“;”分割

密码尽可能的使用单向加密算法或者md5

9.3 多因素认证

除了一般的密码之外,动态口令,数字证书,U盾,第三方证书等都是可用于用户认证的。这些不同的手段可以相互结合,使得认证的过程更加安全可靠。密码不再是唯一的认证手段,在用户密码失窃的情况下,仍可保障用户账户的安全。

9.4 session与认证

Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存息。

但程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否包含了一个session标识-称为 Session id,如果已经包含一个Session id则说明以前已经为此客户创建过Session,服务器就按照Session id把这个Session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现在服务端已经删除了该用户对应的session对象,但用户人为地在请求的URL后面附加上一个JSESSION的参数)。如果客户请求不包含Session id,则为此客户创建一个Session并且同时生成一个与此Session相关联的Session id,这个Session id将在本次响应中返回给客户端保存。

保存Session  id的几种方式:

q  保存Session id的方式可以采用Cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。

q  由于Cookie可以被人为的禁止,必须有其它的机制以便在Cookie被禁止时仍然能够把Session id传递回服务器,经常采用的一种技术叫做URL重写,就是把Session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面。网络在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个Session id

q  另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把Session id传递回服务器。

9.5 session fixation攻击

防范SessionFixation攻击:用户认证后一定要变换SessionID。随机算法需要足够强大。

9.6 session保持攻击

防范Session保持攻击:

在一定的时间或特定的条件强制注销Session。如发出的SessionIP或者UserAgernt或者地点或者多个Session的情况时候。

9.7 单点登录(sso

对于单点登录的一下缺陷,可以在指定的系统应用中加“双因素”验证。

参考:http://dotnet.blog.51cto.com/272325/51559/