cvmachine.com - 申博开户网

查找: 您的方位主页 > 网络频道 > 阅览资讯:WEB前后端别离开发中的验证与安全问题

WEB前后端别离开发中的验证与安全问题

2019-03-31 05:44:00 来历:www.cvmachine.com 【

登录验证以及安全问题:
1、恳求接口悉数用post办法,在后端判别恳求办法是否为post

2、登录暗码等灵敏信息要加密后传输,如用RSA(支付宝里可下载公私钥生成东西),客户端公钥加密,传到服务器后再用私钥解密:

//js公钥加密
function encrypt(data)
{
  //需求引进插件jsencrypt.js 下载地址http://download.csdn.net/detail/codercwm/9770398

  var RSA_PUBLIC_KEY = '';//私钥写在这儿

  var obj = new JSEncrypt();

  obj.setPublicKey(RSA_PUBLIC_KEY);

  var data = obj.encrypt(data);

  return data;
}

//php解密函数
function decrypt($data) {
  $data = base64_decode($data);

  //读取私钥
  $key_private = file_get_contents('./rsa_private_key.pem', 'r');

  //进行解密
  if(!openssl_private_decrypt($data, $data, openssl_pkey_get_private($key_private))) {
    return false;
  }

  return $data;
}

3、登录验证问题
(1)前后端代码放在同一个服务器,仍旧能够运用session保存登录信息;
(2)在登录过程中,假如暗码是明文提交,传输过程中或许会被阻拦,即便加密后传输,也可用阻拦到的已加密暗码直接恳求服务器进行登录,而且由于加密的代码是在客户端js中的,黑客能够修正客户端js,用阻拦到的已加密的暗码绕开此加密代码恳求服务器进行登录,这是十分风险的,所以我想出了如下计划:

恳求登录页面时,服务器生成一个暂时token存储在服务器(session)并回来给客户端,用户提交登录时把暗码和暂时token拼接后经过RSA加密传回到服务器(拼接后再加密的原因是为了避免他人阻拦到单单是暗码加密的字符串,由于假如拿到了单单是暗码加密的字符串,即如上面所说的,无论怎样也能够进行冒充登录的),传到服务器解密后把暗码和token取出,判别token是否正确,若正确即进行暗码判别等一系列登录操作,登录成功后毁掉这个暂时token。
这样即便在用户提交数据的过程中数据被阻拦,阻拦到的数据也是暗码和暂时token拼接后加密的数据,即便黑客用此数据直接对服务器进行恳求,由于用户登录成功后暂时token已被毁掉,所以黑客并不能登录成功。

4、关于阻拦和假造cookie进行登录的防备:
(1)用户登录后,由所以用cookie记载sessid,如过恳求过程中cookie被阻拦,黑客就能够使用此cookie中的sessid在另一台电脑上进行登录,直至用户退出登录服务器session被毁掉,这样是十分风险的,所以我想出了如下计划:

登录后生成一个暂时token贮存到服务器并传回到客户端,客户端下次恳求时把此token传到服务器,判别与服务器中贮存的token是否相同,如不相同即为未登录,如相同即毁掉此token并生成新的token回来到客户端让客户端鄙人一次恳求的时分再传回进行判别,如此重复。
这种办法也有一个缝隙,假如用户在一次恳求后,还未进行下一次恳求就已被黑客阻拦到登录信息并进行冒充登录,他相同能够登录成功并运用户强制下线,但这种办法已大大减少被冒充登录的时机。

5、结合4、5两种计划,我的做法如下:

用户恳求登录页面的时分,服务器生成一个token保存在服务器session中和客户端cookie中,登录时客户端带上此token一同提交到服务器,验证此token是否有用,若有用即登录成功并更新此token,从头赋值到session和cookie中;
登录后的用户在每一次恳求时都判别cookie中的token和session中的token是否相同,若相同即登录有用,而且要更新token,下次恳求再进行判别,若不相同即登录无效。

 
 

本文地址:http://www.cvmachine.com/a/question/100122.html
Tags: 开发 Web 后端
修改:申博开户网
关于咱们 | 联络咱们 | 友情链接 | 网站地图 | Sitemap | App | 回来顶部