不用 https 自己实现对 http请求的内容的 rsa 加密,这样足够安全吗?

设想的方案如下:

服务端生成一对 RSA 的公钥和私钥,在前端第一次请求的时候,将公钥返回给前端。

前端保存这个公钥,每次向服务端发起请求的时候,请求的内容体使用这个公钥加密。

并且前端在发起请求前,也生成一对 RSA 公私钥,请求内容附上公钥,这样服务端返回的内容就可以用这个公钥加密了。

(可能防篡改、防重放还有些问题,但是再加上验证的步骤应该也能实现。)

如此,不使用 https,直接在http的之上做这样一套,这样能实现 https 一样的安全程度吗?

阅读 6.2k
6 个回答

HTTP===不安全

不要试图要去自己实现或模拟HTTPS。那是本质上的区别。

前端的页面和数据打开firebug是随便可以修改的 从firebug把数据修改了,然后用你的公钥加密 ,你会判断出这是属于纂改吗?

答案是不能,一个关键的点在于,自己实现只能对请求体进行加密,并不能对整个请求进行加密。而HTTPS是对整个请求进行加密,包括请求头,而包括请求地址、请求方法在内的很多信息,是存放在请求头里的。另外,HTTPS实现是在与HTTP在同一层的,也就是说,服务器可以识别TCP连接并配对密钥进行解密,而自己实现过程中,服务器无法识别客户端正在使用的公钥是哪个,所以还必须携带能够识别公钥的ID在请求头里。

1.可以自己利用http实现rsa,只不过门槛高,难度大。

2.从题主你这句话【在前端第一次请求的时候,将公钥返回给前端】来看,我觉得你的信息安全还没过关。因此,对于你来说,我觉得你无法实现自己利用http来实现rsa。

你这样做的话在第一次把公钥传给前端的时候怎么保证能安全转交呢,有被篡改、监听的风险。

任何在前端实现所谓的安全都是不安全的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进