psydonki 最近的时间轴更新
psydonki

psydonki

V2EX 第 563938 号会员,加入于 2021-12-01 23:52:59 +08:00
根据 psydonki 的设置,主题列表只有在你登录之后才可查看
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
psydonki 最近回复了
@particlec 西欧这边 15-20 欧,估计英国也差不多 [ doge ]
@TimPeake 电动车没怎么见过,倒是电动自行车越来越多…小年轻一个个在自行车道上“开”的飞快,有点鬼火少年的意思了
2022-12-08 19:10:41 +08:00
回复了 MXXXXXS 创建的主题 北京 公司有阳性还来继续上班
不是开玩笑。

按照正常的剧情,应该很快有第一波高峰,大约 1 月初,大家都会经历一遍身边陆续有人感染。

理性的说,因为医疗资源可能发生挤兑,最好能够避免在这个期间感染,或早或晚。
最终大家可能都得一次,如果是年轻人,真的可以考虑让自己早一点感染,之后有至少 6 个月免疫期,从而避开高峰。

你同事给你机会呢...
2022-06-29 11:05:34 +08:00
回复了 Martin9 创建的主题 Kubernetes k8s pod 莫名奇妙异常
@Martin9 感觉跟我现在遇到的问题很像…目前的想法是看能不能用 ephemeral container, 挂载到出问题的 pod 上, 再通过 netstat 看具体的连接状态。

https://kubernetes.io/docs/tasks/debug/debug-application/debug-running-pod/#ephemeral-container
terraform 貌似就是为了解决这个问题的

2022-06-15 23:42:14 +08:00
回复了 Chaconne 创建的主题 程序员 想在 github 上发布某视频监控产品的漏洞/设计缺陷
github 上中文的内容也很多,新建一个公开的仓库,修改 readme.md 就可以。
有监督才会有进步
2022-06-03 12:08:09 +08:00
回复了 Eyon 创建的主题 问与答 没搞懂 HTTP 请求的安全验证,求指导!
@byte10 估计你没看懂我的回答...

图片在这个帖子加不上了,可以查看我回复历史,最近的那个图片;


对于普通用户而言,获得自己的短期 access_token 没有问题;当然也可以 copy 出来通过 postman 请求后端的资源;
比如像这样的 header ,Authorization: Bearer {{jwt}}


OP 这样实现的问题在于同时暴露了后端服务的地址和长期 /固定 token ;
最明显的隐患在于,假设用户 A 获取自己信息的 url:
https://api.abc.com/users/12345
headers:
Authorization: Basic {{base64 encoded username:password}}

假设 12345 是用户 id, 我完全可以猜测 id 就是一个递增序列,通过 postman 去请求其他人的信息;
https://api.abc.com/users/12346
headers:
Authorization: Basic {{base64 encoded username:password}}

@Eyon 不确定解释清楚了没有,如果你们团队的架构是微服务的话,你可以 Google 一下 azure api gateway.
2022-06-03 05:52:28 +08:00
回复了 Eyon 创建的主题 问与答 没搞懂 HTTP 请求的安全验证,求指导!
OP 你是对的,确实不应该将后台服务的 token 直接暴露给浏览器。
感觉你们团队也在摸索前后端分离和微服务...


你可能有点混淆了 Authorization 和 long term token;

拿 jwt 最佳实践来说,Authorization 中应该传登录行为产生的 access_token ( jwt ),一般过期时限为 15~60 分钟;具体步骤参见 @libook 41 楼。

long term token 一般是用在 Server to Server 通信时的简单校验; 如下图中 gateway 和 Service 之间。


所以一般微服务框架中会存在一个 API gateway 的角色,用来向前端返回和校验 jwt ;
同时充当反向代理,与后台服务进行交互,如果后台服务也是暴露在公网的情况下,出于安全考虑就会用到 long term token;


一图胜千言,


当然在实际的项目中,还是根据自己的需要,可以选择对应的云服务或者自己简单实现一个;
我自己 Next.js 项目中的样例:

```
// src/pages/api/v1/[...param].js
import axios from 'axios';

export default async (req, res) => {
const instance = axios.create({
baseURL: process.env.LC_API_BASE_URL,
headers: {
'token': process.env.LC_API_TOKEN,
'Content-Type': 'application/json',
}
});

try {
var response;

if (req.method === "GET") {
response = await instance.get(req.url);
}
else if (req.method === "POST") {
response = await instance.post(req.url, req.body);
}
else if (req.method === "PUT") {
response = await instance.put(req.url, req.body);
}
res.status(200).json(response.data)
} catch (err) {
var response = err.response;
res.status(response.status).json(response.data);
}
}

```
2022-06-03 04:40:44 +08:00
回复了 isCyan 创建的主题 V2EX 攻略:教你如何在 V2EX 发图片/插链接/插代码/插视频(第二版)
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1280 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 17:50 · PVG 01:50 · LAX 10:50 · JFK 13:50
Developed with CodeLauncher
♥ Do have faith in what you're doing.