前言(啰嗦的废话,可以跳过)

假设你的web服务器没有申请https证书,那么涉及到重要机密的操作(比如登陆)就有可能被中间者轻松窃取。

tips:阿里云可以申请付费https证书(土豪们的选择),也可以申请到免费https证书(贫穷百姓的无奈),但是免费证书“安全隐患”几个字格外耀眼。

 

如何保障登陆安全(http协议)

 

加密传输逻辑(RSA加密)

以登陆为例

(1)向服务器申请一个RSA公钥

(2)客户提交的内容A,利用上一个步骤得到的公钥对A进行加密

(3)将加密内容以POST方式发送到服务器。

  (4)服务器对本地存储的RSA私钥进行解密。

即使中间者拿到公钥和内容A,在不知道私钥的情况下,也无法解密内容。

这样是万事大吉了吗?

中间者即使不知道加密的内容,也可以直接拿加密后的内容,进行(跳过输入环节)登陆,所以在一个完整的操作结束后,需要销毁该**对,这样中间者拿到加密内容来仿登陆就不能被服务器解密,自然就无法登陆了。PS:不要在用完**对后,继续使用。

 

这样就完美了吗?

。众所周知,RSA需要用到大素数,但是大素数的产生是非常难的,所以**对用一次就废弃,是很浪费的,严重影响性能。

RSA**对不应一次使用即废弃,那么就需要改进上面的方案。

改进方案

在步骤(1)之后,客户端向服务器申请一个唯一的id(可以是时间戳或者uuid,只要保证唯一)

在步骤(2)时候,客户端将申请到的唯一id,同样携带并一并加密,并发送到服务器。

在该id使用之后,销毁此id即可,那么加密发送到服务的内容每次就会一样,解释中间人获取到该提交内容,

也不能进行登陆。

 

 

相关文章:

  • 2021-10-21
  • 2021-04-14
  • 2021-11-29
  • 2022-01-17
  • 2021-05-29
  • 2022-02-07
  • 2022-12-23
  • 2021-11-27
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-04-11
  • 2021-08-29
  • 2021-11-05
  • 2021-06-24
  • 2021-07-29
相关资源
相似解决方案