前端就是简单的 :html+js
背景 1: 生成认证流程:1:C 端用户登录 -》服务端生成 token -》带回到 C 端,存储 cookie 中 调其他的 web 接口必须带上 token,进行一些校验(时效,ip 等等)
问题:这样被抓包了,别人拿到了 token,就可以调其他的 web 接口.并且可以任意的传递参数!!
背景 2: 在 1 的基础上加上签名参数(sign,加个 时间戳 用 md5 加密)这样即使你拿到了我的 token,但是你不能对我们的参数进行修改
问题:js 会暴露加密的过程!!
暂时就想到这两个安全性的问题,不知道各位有什么好的方式??
|  |      1quickma      2018-04-24 19:00:50 +08:00 https | 
|  |      2Ryans      2018-04-24 19:04:47 +08:00 JWT 了解一下 | 
|      33a3Mp112      2018-04-24 19:11:19 +08:00 token 被拿走是没办法的。   目前好像没解决方案。 | 
|  |      4chinvo      2018-04-24 19:13:15 +08:00 HTTPS + HSTS 防中间人 token 确保认证授权 sign 防篡改 | 
|  |      5chinvo      2018-04-24 19:13:34 +08:00 服务器端校验不信任任何客户端输入 | 
|  |      6chinvo      2018-04-24 19:15:30 +08:00 理论上来讲,没必要全面禁止自行提交数据,反正只要服务器校验限定了数据的类型和范围,通过页面提交和通过 curl 提交并没有区别。 如果是防机器人提交,可以引入 ReCAPTCHA,防爬可以引入 cookie 验证、频率限制等机制 | 
|      7icy37785      2018-04-24 22:07:00 +08:00 via iPhone 只能增加难度,没办法彻底杜绝,加密和解密从来都是找加密信息价值和解密时间成本之间平衡点 | 
|      8yxwzaxns      2018-04-24 23:25:31 +08:00 via iPhone 说 jwt 的真的大丈夫? | 
|  |      9zjp      2018-04-24 23:58:05 +08:00 via Android token 不应该是服务器端生成吗,前端不知道加密算法和盐。 | 
|      10bazingaterry      2018-04-25 00:21:18 +08:00 via iPhone 怕 token 被抓走就和 ip 綁定吧,參考銀行。 | 
|      11WilliamLin      2018-04-25 00:35:17 +08:00 via Android https 用于 token 防止被抓包,token 在后端生成,并可加入 ip 和 user agent 等信息,下次检验时不同,则认为 token 无效。 | 
|  |      12LeungJZ      2018-04-25 00:40:54 +08:00 | 
|      13WilliamLin      2018-04-25 00:47:58 +08:00 via Android 我之前的一种做法,就是生成随机字符串,然后用这来做 id,加上需验证的信息写入数据库。如果不想这样,可了解 itsdangerous | 
|      14WilliamLin      2018-04-25 00:48:14 +08:00 via Android @LeungJZ 我之前的一种做法,就是生成随机字符串,然后用这来做 id,加上需验证的信息写入数据库。如果不想这样,可了解 itsdangerous | 
|  |      15NicholasYX      2018-04-25 07:09:37 +08:00 via iPhone 个人感觉后台加验证,然后传入数据都是正常数据的话无所谓的 | 
|  |      16ChefIsAwesome      2018-04-25 09:08:12 +08:00 https + 较短的过期时间。 | 
|      17jiuwuerqi OP @zjp token 是服务端生成,但是你要把 token 带回前端,下次请求要带上 token。   问题在于别人 抓到了你的 token,就可以请求了。 然后进一步的新增一个 sign,来保证防止数据被出篡改,因为 sign 是在前端进行加密的,那么 js 容易暴露加密流程 | 
|      18jiuwuerqi OP @WilliamLin ip 和 agent 都是可以模拟的吧,我现在只是加了 ip,就是每次切换网段( WIFI -> 4G 之类的),要重新获取 token,用户体验可能会差一些 @icy37785 说的不错,只能增加难度,难度越大,性能就越低吧。 | 
|  |      20chinvo      2018-04-25 16:36:32 +08:00 | 
|      22WilliamLin      2018-04-25 18:23:46 +08:00 via Android @jiuwuerqi 看你系统用户数,如果系统就万把来人用,不用去担心性能问题,另外,我是用了 nosql 的 kv 来保存 token 的 |