发表于: 2016-04-11 22:23:23
1 2028
【操作步骤】
1.要实现的功能:用户注册时,在后台获取到前台传过来的密码值时,先对该密码进行MD5加密,再把加密后的密码存入数据库。参考链接:http://blog.csdn.net/tango991820/article/details/7582684
1.1 构造MD5加密类MD5Util.java。
1.2 了解java中的static修饰。因为我在MD5Util.java中用到了静态方法。
1.3 功能实现,如果注册时密码为“caojunqi”,存入数据库时会变成“BEB260DFDEFDE43624083D9E8D35268D”
2.开始编写登录页面login.jsp。
2.1 设计两个页面,一个页面是用户未登录时可以看到,一个是用户登录后可以看到。
2.2 了解Token和Cookie,我总结一下,Token是令牌,Cookie是一个数据,里面放着一些键值对。把Token的值存放在Cookie中,用来进行身份验证。
【知识总结】
1.使用基于Token的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:
1.1 客户端使用用户名跟密码请求登录
1.2 服务端收到请求,去验证用户名与密码
1.3 验证成功后,服务端会签发一个Token,再把这个Token发送给客户端
1.4 客户端收到Token以后可以把它存储起来,比如放在Cookie里或者Local Storage里
1.5 客户端每次向服务端请求资源的时候需要带着服务端签发的Token
1.6 服务端收到请求,然后去验证客户端请求里面带着的Token,如果验证成功,就向客户端返回请求的数据
【出现的问题(已解决)】
1.需完善的功能:我的注册页面在提交表单时,会把参数什么的都显示在地址栏上,而且虽然我在注册页面上设置了验证限制(例如当用户注册的账号和用户名重复或者不合法时,注册按钮就不可用),但是如果我直接在地址栏上修改参数值,就能够跳过验证直接写入数据库,那些验证就都没用了。
解决方法很简单,只要把form表单的method设置为post就可以了,即:method="post" method默认是get。
【出现的问题(未解决)】
1.我在想办法生成一个Token,并把它放到Cookie中,我感觉后台验证起来挺容易的,只要把前台页面传输过来的name、account、password和数据库里面的记录进行比较就好了,难的是怎样使用Cookie和Token。
我在看文章的时候碰到了两个术语:SSO和JWT。我在想会不会要用到这些。
【疑问】
1.虽然我能够把密码以MD5加密的方式存入数据库了,但是我感觉这个操作好像并没有什么实际意义,虽然在数据库中显示的是MD5加密后的密码,但是我可以在网站http://pmd5.com/# 上对加密后后的密文进行解密,解密的结果还挺正确,那我这个加密措施就一点都不安全啊,别人拿到密文后,解密一下就能拿到原来的密码,这可咋整?
老大,我还试了一下,密码稍微复杂点的话,那个网站就破解不了了,例如我密码设置为“ppnn20%”,加密后的密文那个网站是解密不出来的,简单点的密码就可以破解。那简单的密码应该用什么加密方式比较好呢?
2.如果我在form表单上添加属性method="post",可以避免表单参数出现在地址栏上,但是我仍然可以通过在地址栏上输入参数的方法来避开js验证直接往数据库中写入数据,这可怎么办?
如正常情况下表单提交后地址栏上会显示“localhost:8080/ITtask_4/register/succeed”,如果我在地址栏上输入“localhost:8080/ITtask_4/register/succeed?userName=caojunqi&phoneNumber=13633333333&password=ppnn20%&submit=Sign+Up”依然能够往数据库写入数据,这样的话,我在注册页面写的那些js验证就没用了。
评论