腾讯面试题思考 — HTTP 可以实现安全传输吗?如果可以,如何实现?
17187
2020.11.20
2020.11.21
发布于 未知归属地

题目如下:
HTTP 可以实现安全传输吗?如果可以,怎么操作?思考一下十几年前 HTTPS 没有普及时,网站如何实现安全传输用户名和密码?

题目比较新颖,我原来没有考虑过这个问题。

http 在传输 web 内容时确实使用明文形式,但是传输用户的口令时(Password 不是密码,称为口令比较正确)是釆取了额外的安全措施的。一般是使用一些加密方式(md5)对口令进行加密即可。但是仅仅对口令加密仍是不够安全的,所以可以在口令中加入一些其他字符,合并之后产生临时口令

具体做法可以是这样的:在提交登录表单时,pwd 并不是真的口令,它是口令 pwd 与时间t混合后再加密的字符串。这样的话即便被截获也是一个无效的数据。即便截获后知道了破解方式,还可以在后台程序中再设定一个时效限制。

即如果下面三个条件有一个不满足就报错:

  1. 时间超过两分钟

  2. uid 不匹配

  3. pwd 与 t 的组合密码不匹配

所以即使是用 http 方式用户的 pwd(口令)也不是以明文方式在互联网上传输的。

当然 http 协议在保护口令方面存在一些安全隐患,对文本内容更缺乏保护,所以才有了今天普遍釆用的 https 协议。

http 和 https 用了各种密码系统保护用户的帐户安全,用户的身份、口令在互联网传送过程中多是以密文形式出现,它们在信道传输过程中是足够安全的。但是用户的身份、口令等信息在用户的终端和服务器端都是以明文形式存在的,互联网的黑客攻击者的贼眼都盯在客户终端和服务器端上。换言之,今日互联网通信安全问题不在信道上,而是主要在信源和信宿上。

2020 腾讯秋招面经(已签三方)
2020 shopee 秋招面经
2020 年字节跳动秋招面经(抖音全栈已 oc)
腾讯面试题思考 — HTTP 可以实现安全传输吗?如果可以,如何实现?

评论 (10)