url加密,一般只对参数加密

时间:2022-08-28 14:56:09

首先,很不推荐你使用get方式发送密码,最好是使用post.

原因是,你通过一个连接把用户名和密码发送到后台,即便密码不是明文,别人获取不到密码明文,但是,只要你这个连接成功登陆过,别人就可以拿这个连接到处登陆.密码明文加密完全形同虚设.



如果非想使用get方式发送,我可以给你个思路,就是表单附带发送令牌,这个令牌是表单内的隐藏域,后台里对每一个时刻都不同的字符串做单向加密然后保存SESSION会话,一般使用md5方式,然后表单页面隐藏域写出该SESSION的值.发送表单的时候,附带令牌一起发送,(在url形式中就是多了一个参数),后台验证令牌是否是保存过的SESSION值,如果是,执行登陆,如果不是,就报错.

不管令牌是不是正确的,你都需要在每次生成页面时重新更新一次令牌并输出,这样才能保证唯一性.

然后你可以使用js版的md5把密码处理成加密字符串.

这样可以躲过部分不熟悉html的,但是如果他懂html,只需查看html的令牌,然后自己去组成url,那么照样还是不行.

所以,这种形式仍是不可取的,正宗的方式就是post发送用户名和密码,或是ajax的get方式发送.

js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:,decodeURI,decodeURIComponent



1.传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。



例如:



2.进行url跳转时可以整体使用encodeURI



例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");



3. js使用数据时可以使用escape



例如:搜藏中history纪录。



4.escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。