用JS方法加密URL

JavaScript0307

用JS方法加密URL,第1张

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

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

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

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

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

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

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

加密代码

function eb(ting)

{

//传入要加密的url

//获取url参数部分

var paraString = ting.substring(ting.indexOf("?")+1,ting.length)

//将加密后的参数重新组合到url中

var rul=ting.substring(0,ting.indexOf("?")+1)+escape(paraString)

//跳转到rul页面呢

location.href=rul

}

解密代码

var urlPara = location.search//获取参数部分

urlPara=unescape(urlPara)//对参数解密

//分析参数

function getPara(paraName){

var reg = new RegExp("[&|?]"+paraName+"=([^&$]*)", "gi")

var a = reg.test(urlPara)

return a ? RegExp.$1 : ""

}

//捕获参数并进行操作

//window.onload = function(){

//var url= getPara("id")//捕获到url参数

//document.getElementById("TextBox1").value = url

//}