如何使用 SSH 密钥进行安全的无密码连接
还记得刚开始向 GitHub 推送代码时,首要任务就是通过设置 HTTP 或 SSH 认证方式来执行 git 操作。由于很早以前设置好后就忘了当时的具体操作,最近在处理服务器连接时,又想到应该深入理解并记录其背后的原理与相关安全机制。
还记得刚开始向 GitHub 推送代码时,首要任务就是通过设置 HTTP 或 SSH 认证方式来执行 git 操作。由于很早以前设置好后就忘了当时的具体操作,最近在处理服务器连接时,又想到应该深入理解并记录其背后的原理与相关安全机制。
Anthropic 近期公告称,未来的模型都会为文字添加水印:Claude 的文字水印如何工作,因此我想研究一下 LLM 文字水印是如何实现的,以及对用户有什么影响?主流的 SynthID-Text 运作方式与如何看待 AI 水印。
服务之间对同一笔数据有不同的命名与定义,是多存储库架构最常见的痛点,也让 AI 难以获得一致的上下文。gRPC 以 Protocol Buffers 作为唯一真实来源,用一份 .proto 生成各语言的类型与客户端,让字段命名与缺漏问题在编译期就被挡下来。
最近工作中会遇到 Mongo 进行关联查询的问题,如果没有处理好很容易变成 N+1 问题,举例问题背景像是这样:「一个用户可以有多个订单,多个订单可以对应多个产品」。刚好最近在制作一款基于 Mongo Go Driver 的 Query Builder:good,这个常见问题值得探讨。
这个时代开发产品一定会被反复要求「我们的产品能不能整合 AI?」、「AI 能带来什么新的商业机会?」,很多团队包括我也是第一次遇到需要把 AI 整合到实际产品中的情况。而我正在开发的产品又需要运行在必须断网的严苛环境中,因此这篇文章主要研究尽可能基于浏览器或本地 LLM 的 MVP,重点探讨技术上的可能性。
学习 Go 时我一直想找个机会尝试并发场景,而一个最基础的 Worker Pool(Thread Pool)就是很好的入门模式:「让固定数量的 worker 在后台运行,等待分配给它们工作」。这个场景很适合练习并发,因为每张图片彼此独立,不需要等前一张完成才能生成下一张,但也不能无限制地全部同时运行。
在先前写给网页开发者的 CSRF 理解与防范提到其中一种防范方式是透过生成 CSRF Token,而这其实算是一种 Nonce。 Nonce 等于只用一次的数值,可以是任何形式的资料:数字、字串、递增计数器、时间戳……重点在验证「每一次操作都必须唯一」,攸关重要行动的地方都会用到 nonce。
Go 既没有 Enum(枚举)也没有 Union(联合)的关键字,因此会使用现有的语言特性来达到相同效果。参考 TypeScript,使用 Enum 组合 (const + iota) 与 Union 组合 (interface + struct)。
最近用到 Go 官方 uuid 库产生 UUID v7 时候留意到一种使用方式是:Must,他的描述也很简单:Must returns uuid if err is nil and panics otherwise. 用途是「当错误不是一个可以恢复的选项时」,使用包装好的 `Must` 直接 panic 错误。
你有遇过格式不一的后端专案吗?近期在翻新某个 Go 后端专案痛苦的因素就是请求与回应格式不一,这是一个很直白且简单的问题,但实际会造成很大的困扰。藉由定义完整的 Agent Skills 文件与 goal 来自动达成目标。
最近在撰写的 Go 后端使用到大量的本地文件访问,其中最需要被防范的问题之一就是「路径遍历」。而在 Go 1.24 新增了 `os.Root` API 简洁优雅地避免安全问题。可以考虑所有 `os.Open` 的使用场景是否安全,并替换为 `os.Root` 确保「操作不应访问该目录之外的文件」。
服务通常会经过各种代理转发请求,但当我们要做判断请求身份、审计日志、一切与来源请求 IP 相关的功能时要如何拿到正确的资讯?记录一下我根据 Go Gin 受信任代理文件学习到的最佳安全实践。与同事讨论让我反思并挖掘真正设置所谓 `ClientIP` gin 做了哪些策略让 ip 获取是安全合理的。
还记得小时候的电脑都是 32-bits 的系统,大约在 win7 的时代已经逐步的替换成 64-bits 系统了,但我还是不了解具体来说有什么差异,只记得有段时间有两种软体规格可以选择,或是某些软体需要用「兼容模式」来执行。
当处理多个加解密应用时我纳闷:「多一份金钥需要管理,意味着多一个需要防守的东西」、「如何避免用户使用一串非常简单的金钥让破解变得非常容易」。而正好有个专门的算法:金钥衍生函式 Key Derivation Function 正是为此类问题而生。
在学习 Go 时会了解到 `struct` 其实就是一串自订的资料结构,而其中栏位的「顺序」将直接影响到在内存中所占用的实际大小甚至程式的速度。了解内存对齐的概念除了「节省空间」外也能为打造「更佳的缓存局部性(Cache locality)」。