网络帐户管理器

分享于 

7分钟阅读

Web开发

  繁體

Sample Image - webaccount.gif

介绍

我们为什么需要这个?
我们的想法不仅仅是记住大量的密码
出于安全考虑,密码不仅长,而且很难记住。

背景

所有网络登录表单都有共同的内容
user一个输入框,用于用户名
输入密码的2
3 一个复选框以指示是否要记住密码以便将来访问

但是,有些不同。
我们知道输入值的字段名称 ,我们知道服务器上运行的应用程序通过字段名获取值,字段名不同于应用程序。
将登录信息发送到的地址 2

因为html文件是文本格式,因此如何保持密码安全?
我已经找到了一个简单的想法: 编码密码;
使用哪一种方法:base64?
有人可能会问,可以用base64编码密码,每个人knowns如何解码它们。
要增加破解密码的难度,最简单的想法是: 更改base64字符映射。: )
甚至你的密码都是加密的,不安全,不丢失你的帐号,存储在ntfs和加密中。

编程

现在让我们进入程序。
面向对象编程应用于这个程序。
我们有 3个对象:FormCollectionAccountFormAccount

对象 Account 存储帐户信息,Account 属于 AccountForm

function Account 
(user,pass,rem,form)
{
 this.Username=user;
 this.Password=pass;
 this.RemLogin=rem;
 this.Form=form;//form holding this account this.Login=function(){
 if(this.Form!=null)
 {
 this.Form.GenForm();//show form document.getElementById("username").value=this.Username;
 document.getElementById("password").value=Base64Encode(this.Password);
 if(this.RemLogin!=null)
 document.getElementById("rempass").checked=this.RemLogin;// document.getElementById("LoginForm").submit();//uncomment this to auto submit }
 }
}<P></P>

对象 AccountForm 存储登录表单,方法 GenForm 将html输出到html对象 oLoginForm

function AccountForm 
(name,oU,oP,oR,url,att)
{
 this.Name=name;
 this.UserObj=oU;
 this.PassObj=oP;
 this.RemLoginObj=oR;
 this.Action=url;
 this.Attach=att;//attached form items this.Accounts=new Array();
 this.GenForm=function(){
 var fm="<form id=LoginForm method=post action="+this.Action+">";
 fm+="<table border=0><tr bgcolor=gray><td colspan=2 align=center style=color:white;font-weight:bolder>"+this.Name+"</td></tr>";
 fm+="<tr><td>Username:</td><td><input id=username type=text name="+this.UserObj+"></td></tr>";
 fm+="<tr><td>Password:</td><td><input id=password type=password name="+this.PassObj+"></td></tr>";
 if(this.RemLoginObj!=null)
 fm+="<tr bgcolor=silver><td colspan=2 align=center><input id=rempass type=checkbox name="+this.RemLoginObj+"><label for=rempass>Remember Me</label></td></tr>";
 fm+="<tr bgcolor=gray><td colspan=2 align=center><input type=submit value=Login></td></tr></table>";
 if(this.Attach!=null)
 fm+=this.Attach;
 fm+="</form>";
 document.getElementById("oLoginForm").innerHTML=fm;
 }
 this.AddAccount=function(user,pass,rem){
 var ac=new Account(user,pass,rem,this);
 this.Accounts[user]=ac;
 }
}

对象 FormCollection 是一组登录表单,它帮助我们组织 forms.the 方法 UseAccount 填充表单。

function FormCollection ()
{
 this.Forms=new Array();
 this.AddForm=function(name,oU,oP,oR,url,att){
 var x=new AccountForm(name,oU,oP,oR,url,att);
 this.Forms[x.Name]=x;
 return x;
 }
 this.UseAccount=function(name){
 var x=name.split(":");//account path is analysed and loaded if(x.length==2)
 {
 var ac=this.Forms[x[0]].Accounts[x[1]];
 ac.Login();
 }
 }
 this.GenButtons=function(){
 for(var i inthis.Forms)
 {
 var x=this.Forms[i];
 document.write("<ol>"+x.Name);
 for(var j in x.Accounts)
 {
 var y=x.Accounts[j];
 document.write("<li><input type=button onclick=myforms.UseAccount(this.value) 
value="+x.Name+":"+y.Username+"></li>");
 }
 document.write("</ol>");
 }
 }
}

使用代码

var myforms=new FormCollection();//google loginformvar 
x=myforms.AddForm("Google","Email","Passwd","PersistentCookie","https://www.google.com/accounts/ServiceLoginAuth");
x.AddAccount("vmlinuxx@gmail.com","it is a secret",true);//codeproject loginform
x=myforms.AddForm("Codeproject","Email","Password","cookie","http://www.codeproject.com/script/profile/process_logon.asp");
x.AddAccount("vmlinuxx@hotmail.com","it is also a secret",true);//gmail loginform
x=myforms.AddForm("Gmail","Email","Passwd","PersistentCookie","https://www.google.com/accounts/ServiceLoginAuth","<INPUT 
type=hidden value=https://gmail.google.com/gmail name=continue><INPUT 
type=hidden value=mail name=service>");
x.AddAccount("vmlinuxx@gmail.com","it is a secret as well",true);//mywallop loginform
x=myforms.AddForm("MyWallop","EmailAddress","Password","UseCookies","http://mywallop.com/Login.aspx?ReturnUrl=%2fdefault.aspx");
x.AddAccount("a@b.c","password",true);<P></P><P>myforms.GenButtons();//generate account buttons</P>

常见问题解答

  • 添加新登录表单的方法?
    是的,我们必须知道如何分析一个表单
  • 添加新帐户的费用?
    使用AccountForm对象的AddAccount方法,填写帐户名,编码密码以及是否记住登录状态。
  • 获取编码密码的?
    我为你提供 MyPassword.htm 编码密码,请记住在编码前在 MyBase64.js 中更改 Base64Chars ( 建议切换位置)

WEB  MAN  acc  账户  
相关文章