paip.提升安全---绝大多数网站的登录高危漏洞解决方案

作者Attilax , 1466519819@qq.com

WEB登录密码明文传输的严重性... 1

JS实现 RSA非对称加密算法... 1

加解密及传输流程... 1

后台产生一对公钥下发给WEB页... 2

WEB页JS调用公钥进行加密提交... 2

后台校验密码不能为空... 3

解密密码... 4

密码编码器pwdEncode大部分原码... 4

参考:6

WEB登录密码明文传输的严重性

今天,几乎所有的网站都有登录注册模块,登录就要输入用户名和登录密码,并且,用户名和登录密码都是明文传输的,这样就有可能在中途被别人拦截,尤其是在网吧等场合。

JS实现 RSA非对称加密算法

所以,很多安全要求较高的网站都不会明文传输密码,它们会使用https来确保传输过程的安全,https是用证书来实现的,证书来自于证书颁发机构,当然了,你也可以自己造一张证书,但这样别人访问你的网站的时候还是会遇到麻烦,因为你自己造的证书不在用户浏览器的信任范围之内,你还得在用户浏览器上安装你的证书,来让用户浏览器相信你的网站,很多用户并不知道如何操作,就算会操作,也能也不乐意干;另一种选择是你向权威证书颁发机构申请一张证书,但这样有一定的门槛,还需要付费,也不是我们乐意干的事。

所以使用JS来实现RSA加密是个很好的方法..我的网站是ASP。NET的.. 真正的难点在于用javascript实现一个和.net的RSA兼容的算法

加解密及传输流程

后台产生一对公钥私钥

传给WEB页面

登录/注册的时候,使用JS加密

后台解码.

后台产生一对公钥下发给WEB页

  protected void Page_Load(object sender, EventArgse)

    {

       

 

 

        pwdEncode pe= new pwdEncode();

        string[] ret=pe.PublicKey();

        strPublicKeyExponent=ret[0];

        strPublicKeyModulus=ret[1];

      

    }

    protected string strPublicKeyExponent="";

    protected string strPublicKeyModulus="";

WEB页JS调用公钥进行加密提交

//两个加密文本框,加密后的密码保存在这里..如果是登录页面,只需要一个就可以了

<input name="encrypted_pwd" type="hidden" id="encrypted_pwd" />

<input name="encrypted_pwd2" type="hidden" id="encrypted_pwd2" />

//调用相关JS

<SCRIPT type=text/javascript src="/index_files/Account.js"></SCRIPT>

<script src="/Scripts/jQuery.md5.js" type="text/javascript" ></script>

<script src="/Scripts/BigInt.js" type="text/javascript"></script>

<script src="/Scripts/RSA.js" type="text/javascript"></script>

<script src="/Scripts/Barrett.js" type="text/javascript"></script>

<script>

//从后台得到公钥

var strPublicKeyExponent="<%= strPublicKeyExponent%>";

var strPublicKeyModulus="<%=strPublicKeyModulus%>";

//加密函数

function cmdEncrypt() {

setMaxDigits(129);

var key = new RSAKeyPair(strPublicKeyExponent, "", strPublicKeyModulus);

var pwdMD5Twice = $("#SignIn_Pword").attr("value");

var pwdRtn = encryptedString(key, pwdMD5Twice);

$("#encrypted_pwd").attr("value", pwdRtn);

//注意:需要清空原密码框

$("#SignIn_Pword").attr("value","");

}

//登录按扭事件

function  login_click()

{

cmdEncrypt() ;

return true;

}

//登录按扭事件注册

$('#SignIn_SignInClt').click=login_click;

$('#SignIn_SignInClt').click(function(){

login_click();

});

后台校验密码不能为空

因为使用了加密方式,所以原来的校验需要去掉,使用新的校验方式

            loginCheckor lc= new loginCheckor();

            lc.check(Account, Request["encrypted_pwd"]);

 

public bool check(string uname,string pwd)

 

    {

        if (uname=="")

        {

            throw new SystemException("帐¨º号?未¡ä输º?入¨?");

        }

      //  if(uname==null|| uname.Equals(""))

        if (pwd== null ||pwd.Equals(""))

            throw new Exception("密¨¹码?不?能¨¹为a空?");

        //

        //TODO: 在¨²此ä?处ä|添¬¨ª加¨®构1造¨¬函¡¥数ºy逻?辑-

        //

        return true;

    }

如果是注册页面

  //ati L921 am

        

            pwdEncode pe= new pwdEncode();

            pe.checkEmpty(Request["encrypted_pwd"], Request["encrypted_pwd2"]);

            string pwd=pe.getPwd(Request["encrypted_pwd"]);

            string Pword2=pe.getPwd(Request["encrypted_pwd2"]);

            pe.check(pwd, Pword2);  //检测两个密码是否相同

            //不能直接检测参数,因为公钥加密后的两个参数不同,需要解密后进行比较

解密密码

-------登录后台

     pwdEncode pe= new pwdEncode();

        

            Pword=pe.getPwd(Request["encrypted_pwd"]);

密码编码器pwdEncode大部分原码

//这里主要使用session来保存RSA加密器和私钥

//发送公

public string[] sendPublicKey()

    {

        RSACryptoServiceProvider rsa;

        if (HttpContext.Current.Session["rsa"] != null)

            rsa= (RSACryptoServiceProvider)HttpContext.Current.Session["rsa"];

        else

            rsa= new RSACryptoServiceProvider();

 

        //if (string.Compare(Request.RequestType, "get", true) == 0)

        {

            //将?私?钥?存ä?Session中D

            HttpContext.Current.Session["private_key"] =rsa.ToXmlString(true);

            HttpContext.Current.Session["rsa"] =rsa;

        }

        //把ã?公?钥?适º¨º当Ì¡À转Áa换?,ê?准Á?备À?发¤¡é往ª¨´客¨ª户¡ì端?

        pwdEncode pe= new pwdEncode();

        RSAParameters parameter=rsa.ExportParameters(true);

  string      strPublicKeyExponent=pe.BytesToHexString(parameter.Exponent);

  string strPublicKeyModulus=pe.BytesToHexString(parameter.Modulus);

  string[] r= new string[2];

  r[0] =strPublicKeyExponent;

  r[1] =strPublicKeyModulus;

 

  return r;

 

 

    }

//解密函数

private static string getDecodePwd(string pwd)

    {

        RSACryptoServiceProvider rsa;

 

        rsa= (RSACryptoServiceProvider)HttpContext.Current.Session["rsa"];

        pwdEncode pe= new pwdEncode();

        //   RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

        string strPwdToDecrypt=pwd;

        rsa.FromXmlString((string)HttpContext.Current.Session["private_key"]);

        byte[] result=rsa.Decrypt(pwdEncode.HexStringToBytes(strPwdToDecrypt), false);

        System.Text.ASCIIEncodingenc= new ASCIIEncoding();

        string strPwdMD5=enc.GetString(result);

        return strPwdMD5;

    }

参考:

用RSA加密实现Web登录密码加密传输 - guogangj - 博客园

paip.提升安全---网站登录密码明文传输的登录高危漏洞解决方案相关推荐

  1. 网站密码明文传输解决方案js+java

    解决密码明文传输的方案,基本有两种解决方案 1,将项目网站全站升级为https协议(如果要更谨慎,还需要加密). 2,将密码进行加密后,在后台解密. 因项目升级https时间周期太长.将暂时替代方案改 ...

  2. 浅谈“密码明文传输”

    一:漏洞名称: 密码明文传输 描述: 明文传输一般存在于web网站登陆页面,用户名密码采取明文传输并未采取加密(注意:一些软件如BurpSuite带有可加密的暴力破解!)容易被嗅探软件截取(如果加密方 ...

  3. 支付宝登录密码和淘宝登录密码一样吗

    支付宝登录密码和淘宝登录密码一样吗? 不一样的.淘宝会员为一个账号,只有一个密码. 支付宝注册账号是邮箱账号来的,有一个登录密码.另外有一个支付密码.是你购物的时候最后付款用的. 我网上购物的年龄已经 ...

  4. FTP-用户名密码明文传输

    一.实验原理 FTP协议用于用户认证的过程中,客户端与服务器是通过明文进行交互信息的. 二.实验环境 目标主机:Win2K3 192.168.20.145 攻击主机:Kali2 192.168.20. ...

  5. 远程修改服务器登录密码,远程服务器修改登录密码

    远程服务器修改登录密码 内容精选 换一换 本文介绍如何在裸金属服务器操作系统内部修改登录密码.建议优先在控制台上重置密码,如果不可以,再尝试在操作系统内部修改登录密码.此处以CentOS 7.5版本为 ...

  6. 服务器登录密码 被修改,服务器登录密码被人改

    服务器登录密码被人改 内容精选 换一换 云堡垒机支持批量导出资源信息,用于本地备份资源配置,以及便于快速管理资源基本信息.为加强资源信息安全管理,支持加密导出资源信息.导出的主机资源文件中包含主机基本 ...

  7. 阿里云ECS Ssh登录 密码栏灰色 密钥登录不上,VNC login incorrect解决

    直接上解决后ssh连接阿里云服务器图片: 解决方法: 实例-0更多-密码/密钥-重置实例密码 2. 改完之后,系统自动重启一遍之后,再手动重启一遍(更多-实例状态-重启) 3.检测:实例-远程连接-w ...

  8. 计算机怎样记住用户名和密码,电脑浏览器怎么记住登录密码 电脑浏览器记住登录密码方法【详解】...

    浏览器,这是大家现在很熟悉也经常需要使用到的电脑工具.网上冲浪绝对少不了浏览器的配合,现在随着各种浏览器技术的进步,浏览器的功能也变得日趋的强大. 现在最给力的功能应该说是浏览器的自动记住密码的功能了 ...

  9. 登录无线商品服务器密码,wifi登录密码是什么_wifi登录密码初始密码是多少?-192路由网...

    wifi登录密码是什么? wifi登录密码的初始密码是多少? 这2个问题,经常有用户在找鸿哥咨询.下面鸿哥通过这篇文章,来详细说明wifi登录密码的问题. wifi登录密码,严谨的说法,应该是叫做路由 ...

  10. 校验规则自定义(身份证、姓名、企业名称、统一社会信用代码、手机号码、登录密码、二次登录密码、验证码)

    切换用户类型分别校验对应的字段 注册为例,分别有两个注册类型 2是企业 3是专家 var validatesfz = async (rule, value, callback) => {if ( ...

最新文章

  1. [LeetCode]Maximal Rectangle
  2. Laravel中使用模型对数据进行操作
  3. 7x24小时实时互动,网易云信金融行业虚拟客服解决方案来啦!
  4. 有趣的js匿名函数写法(function嵌套)
  5. linux 项目同步,Linux项目系统,Linux控制台窗口,同步和附加到进程的Linux C ++工作负载改进...
  6. 基础知识之 - C# Using的用法
  7. UvaLive7362 Fare(欧拉函数)
  8. Redis 彻底禁用RDB持久化
  9. HIVE学习之(三)
  10. Windows C盘清理指北
  11. CI框架入门中的简单MVC例子
  12. 施努卡:什么是视觉定位系统 视觉系统如何定位
  13. 加密公司如何获得硅谷传奇风投a16z的青睐
  14. JAVA(五) ——类,对象,变量,方法,构造方法 【简解】
  15. Docker加速器 DaoCloud
  16. Element-Ui 双重el-tabs组件选中第二层时,刷新导致第一层选中样式丢失问题以及解决方法
  17. supermap javascript 点聚合
  18. PyQt5 Qt Designer 新手教程(一)—— 软件界面介绍
  19. 疫苗行业薪酬增长率在生物医药领域最为突出;华为发布全场景智能光储解决方案;开利完成对广东积微集团的收购 | 美通社头条...
  20. android学习步骤

热门文章

  1. 关于Activity跳转动画大汇总
  2. Lucene中的各种consumer
  3. Ubuntu 12.04下Proftpd FTP服务器配置
  4. ***利用高考传播*** 考生上网谨防中毒
  5. 贴张我家养的狗狗们的照片!
  6. MySQL-第八篇MySQL内置函数
  7. flask-login
  8. 黑金AX301 SDRAM读写
  9. form表单提交的时候,传过去的值是键值对的形式
  10. Software--WCF