WEB密码安全输入控件

在没有使用ssl加密的系统中登录,登录的用户名和密码都是在网络中通过明文传送,安全性较低,可以使用插件形式对密码进行加密后再传送,使用键盘钩子拦截键盘输入内容,防止被其它工具记录,类似银行网银安全输入控件。

       为了保证每次加密的结果的不同(防止跨域提交或截取加密信息伪提交),每次加密的key的一部分由服务器端随机生成,在页面加载的时候由服务器端生成通过页面js脚本传递给密码输入控件,密码输入控件根据控件内置的密码和传入的密码进行加密(如DES),服务器接收后再进行解密得到原密码

          使用密码插件可以有效防止密码及关健信息在网络上被截取,导致账户密码丢失,保证服务器至用户端的安全传输。

       如插件中内置密码为abc,服务器端随机生成的密码为1346,那么插件在加密时即使用 abc1346密码对用户输入的密码进行加密,传输时数据被截取后只能获取的随机密码1346,而没有完整密码不能对加密的密文进行解密,而且加密的密文只对本次登录有效,而不能通过程序模拟登录,因为下一次的随机密码改变导致加密密文改变。有效保证登录的安全。

       如需破解加密的密码就需要破解登录插件内置密匙及加密算法,一方面增加了获取信息的成本,一定程度上提升密码的安全性。

          通过键盘钩子和随机密码防止重要信息被非法获取,不仅可用于用户名密码加密也可以用于其它需要加密的信息的录入

 html代码

[html] view plain copy
  1. <HTML>  
  2. <head>  
  3. head>  
  4. <BODY>  
  5. <br /><br />  
  6. <OBJECT id="pwd1" classid="clsid:57DA8346-C0C5-428F-A2B7-ED912C13D7FF" width="500" height="24">  
  7. <param name="regsn" value="" />  
  8. <param name="PasswordChar" value="#" />  
  9. <param name="ukey" value="1234" />  
  10. <param name="fontsize" value="14" />  
  11. OBJECT>  
  12.   
  13. <OBJECT id="pwd2" classid="clsid:57DA8346-C0C5-428F-A2B7-ED912C13D7FF" width="500" height="20">  
  14. <param name="regsn" value="" />  
  15. <param name="PasswordChar" value="" />  
  16. <param name="ukey" value="1234" />  
  17. OBJECT>  
  18. <br />  
  19. <input type="button" value="获取加密密码" style="float:left;" onclick="mm1.value=pwd1.Value" />  
  20. <input type="button" style="margin-left:500px;float:left;" value="获取加密密码2" onclick="mm2.value=pwd2.Value" />  
  21. <br clear="both" />  
  22. <input type="text" style="width:500px" id="mm1" />  
  23. <input type="text" style="width:500px" id="mm2" />  
  24.   
  25. BODY>  
  26. HTML>  


 

ekey 可以使用guid、时间等,不重复使用

服务器验证时用保存在session中的ekey进行密码解密,防止使用过期的ekey加密的信息登录


 



原文转载至:http://blog.csdn.net/ldevs/article/details/16809267

你可能感兴趣的:(白帽子实战系列)