整个网站包含大量隐私信息,如果任何人都可以随意访问,就容易泄漏用户个人的隐私信息,为此必须为网站添加门禁系统。通过简单的机动密码,防止任何人都可以访问数据库。
首先,开发本网站专用加密和解密函数,这里没有直接调用JavaScript的加密和解密函数,就是防止一般用户能够破解。
//加密函数
function compile(code){
var c=String.fromCharCode(code.charCodeAt(0)+code.length);
for(var i=1;i<code.length;i++){
c+=String.fromCharCode(code.charCodeAt(i)+code.charCodeAt(i-1));
}
return (escape(c));
}
//解密函数
function uncompile(code){
code=unescape(code);
var c=String.fromCharCode(code.charCodeAt(0)-code.length);
for(var i=1;i<code.length;i++){
c+=String.fromCharCode(code.charCodeAt(i)-c.charCodeAt(i-1));
}
return c;
}
然后,定义一个门禁函数,只要在需要的功能区域调用该函数,就需要用户输入密码,只有输入正确才能够进入或者使用该功能。
//访问权限限制
//参数说明:sql-查询字符串,字符串;tablearr-要限制的数据表,数组
//返回值:返回true,表示通过,否则返回false表示没有通过
function key(sql,tablearr){
//清除两侧空格
var sql = sql.replace(/^(\s| )+/g,"").replace(/(\s| )+$/g,"");
sql = sql.replace(/(\s| )+/g," ");
sql = sql.toLowerCase();
if(!(typeof tablearr == "object") && !(tablearr.constructor == Array)){
alert("数据表列表不是数组!");
return false;
}
for(var i=0;i<tablearr.length; i++){
var tempstr = "from " + tablearr[i];
var tempstr1 = "from [" + tablearr[i] + "]";
if(sql.indexOf(tempstr)>-1 || sql.indexOf(tempstr1)>-1 ){
var pass=prompt("请输入访问密码:");
if(pass != uncompile(code)){
pass=prompt("输入不正确,请重新输入访问密码:");
if(pass != uncompile(code))
return false;
}
}
}
return true;
}
最后,在onload.js文件中设置数据库访问密码为admin,同时限制用户访问的数据表为blog和blogdetail两个表。当用户查询这两个表的数据时,都会自动要求输入密码,正确密码为admin,该密码通过加密函数进行加密,防止密码外泄。这样普通用户即使查看源代码,也不知道具体密码是多少。
var code = "f%C5%D1%D6%D7"; //密钥,即为admin var table1limit = ["blog","blogdetail"]; //禁止随意访问的数据表