后端 PHP 给浏览器发送一个密钥,怎样才尽可能不被发现?

2017-11-09 11:24:20 +08:00
 alwayshere

前端 js 和后端 php 公用一套加密解密系统,公用一个密钥,php 加密的字符串传到前端通过 js 进行解密,现在这个加密和解密函数的密钥想尽可能不被别人发现,该怎样实现?

  1. 用 ajax 二次请求密钥,但是 F12 一抓包就暴露了
  2. 把密钥写进一个 png 图片(类似二维码)里,通过 js 结合 canvas 来读取,但是 IE 表示无能为力
  3. 通过 cookie,input hidden 这些就更暴露了
  4. append 一个 script 标签,通过 jsonp 的形式加载,跟 ajax 一样,一抓包就暴露了
  5. websocket ? 因为 IE, 不考虑

求好心 V 友们,有没有好点的办法?

8280 次点击
所在节点    程序员
47 条回复
BOYPT
2017-11-09 14:10:33 +08:00
很简答啊,让用户根据页面提示拨打你的电话,你告诉他密钥让他输入。
findTheWay
2017-11-09 14:18:14 +08:00
js 和 php 共用同一个加密解密方法,js 端的公共方法加一下密,不知道加密后的 js 方法难能不能使用。这只是一个思路
gouchaoer
2017-11-09 14:46:50 +08:00
js 和 php 都用 aes 对称加密密钥 key,这个 key 是 js 生成的
然后这个 key 用 rsa 的公钥加密后传给 php,php 用 rsa 的私钥解得到 key,然后用 key 来解密得到数据
gouchaoer
2017-11-09 14:48:57 +08:00
你都用了 https 了就没必要了,因为浏览器里的东西都能被看光光
Tokin
2017-11-09 15:28:55 +08:00
@dangyuluo 没有 get 到高明之处。。。密码还是在网络中传输了哇?在客户端对比密码的话,不一样有泄露风险么?可能我有点菜。。。
moonsola
2017-11-09 15:42:30 +08:00
@Tokin 网络中传输的肯定不是密码明文,拿到也没用
DOLLOR
2017-11-09 15:52:06 +08:00
先说清楚不被谁发现?
运营商、中间人:HTTPS 足矣,其他都是徒劳。
用户:什么也不做。没有哪个客户会无聊到关心你的代码、密钥,折腾这个只是浪费时间。
其他好事者、F12 玩家:什么也不做。任何东西到了浏览器内部后,一切都暴露出来,你千方百计地隐藏,最多只是提高一点门槛。
Tokin
2017-11-09 16:46:39 +08:00
@moonsola 既然不是明文,那要在客户端解密。。。为啥不在客户端加密上传到服务器呢?虽然我现在都是 https+明文传输。。。
imxieke
2017-11-09 19:24:17 +08:00
@msg7086 现在广场普遍有路灯 (⁄ ⁄•⁄ω⁄•⁄ ⁄)
可以试试把脸蒙上露个眼
dnartz
2017-11-09 20:19:56 +08:00
迪菲-赫尔曼密钥交换,但是如果没有 HTTPS 证书信任,浏览器还是有可能被中间人劫持。
odoooo
2017-11-09 20:33:48 +08:00
推荐你看看 1Password 的白皮书,TLS 是安全的,如果你对安全等级要求高,不要完全依赖他。
odoooo
2017-11-09 20:35:33 +08:00
odoooo
2017-11-09 20:59:02 +08:00
As discussed in Transport Security
we make use of TLS but do not wish to rely on it.
iVanilla
2017-11-09 22:42:32 +08:00
两年前我也考虑过,但这是不可能实现的
silencefent
2017-11-09 22:43:45 +08:00
其他浏览器用 canvas,检测到 ie 直接发明文,我觉得用 ie 的人大多用不到 f12
dangyuluo
2017-11-09 23:20:12 +08:00
@Tokin 在客户端比对这就是问题所在啊。
yingfengi
2017-11-09 23:26:24 +08:00
@msg7086 这算不算 https
qq292382270
2017-11-09 23:28:39 +08:00
不用纠结这些事.. 不管怎么做都有破解方法的 ..
只有提升破解难度.让破解者觉得得不偿失..才能达到效果..
wtcoder
2017-11-10 01:21:27 +08:00
Flash 不谢~
linescape
2017-11-10 08:47:23 +08:00
@gouchaoer 然而还是防不了中间人

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/404877

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX