要提升技术并不难,要改变思维模式很难。
今天去一家新公司报到,第一天就遇到了一个问题:在传递参数的过程中,我居然把USERNAME 写进了URL! 这受到了项目经理非常严厉的批评!
我从前一直是这么写的,这么做的好处显而易见:简单粗暴方便取值,也不用想太多逻辑;缺点也很明显:大大降低安全性。我之所以会这么写,表面上的原因是我不清楚页面机制,实际上,是由于我的思维方式太过于单一,只会使用大脑中习惯性最简单处理问题的方式解决问题导致:
要解决这个问题,最容易想到的解决方案是对传递参数中的用户名进行加密,这点是可以通过技术上的提升:即编写更复杂的加密算法来解决;能够做到这点的工程师是一个好的工程师,但做到这点就足够了吗?
一般的WEB网站,每个页面的机制都是相对独立的;也就是说,A页的值如果不经过传递,在点击页面跳转时,是不会被自动送到B页的;在如上的案例中,需要传递用户名的目的是为了在B页跟据用户名取得用户实体;根据用户实体创建会话;既是这样,有没有避免传值的做法呢?
其实,在A页就直接建立会话实体,然后将这个会话实体的编码在数据库中比对后,如果未存在有重复项,就将会话编码传递给B页,若有重复项,则将已存在的会话编码传过去;一样可以达到效果
以上的两种做法,一个通过技术上提升改进实现,一个是通过思维方式上拓展实现改进,能一下子想到后一个方案的工程师,才是一个合格的工程师
网友评论