我想要过程感知类型

主要观点:一直希望有能以最小开发成本防止暴露敏感数据的类型系统,为此为 Go 设计了inproc[T]xproc[T]两种新容器类型及全局函数larry(),它们在编译时被移除,实现近乎零成本的数据隐私设置,无需运行时更改,除基于反射的检查外。
关键信息:

  • 许多应用中有敏感数据需以明文形式使用,如服务器应用中的用户密码哈希等,处理这些值易导致敏感数据泄露。
  • 现有技术如访问修饰符、自定义序列化等各有缺点,不能有效防止敏感数据泄露。
  • inproc[T]表示不应跨进程边界使用的值,xproc[T]表示可跨进程边界使用的值,它们有独特的变异规则,在二进制表达式、赋值、函数参数、返回值等场景中表现不同,集合类型不能被标记为inprocxproc
  • 需有从inproc[T]xproc[T]的显式转换,通过larry()函数实现,可明确敏感值的有意暴露。
  • inproc[T]xproc[T]在 Go 的 IR 构造阶段被擦除,larry函数在编译时被优化掉,实现近乎零成本的数据隐私设置,encoding/json.Marshal函数需修改以处理inproc[T]值。
    重要细节:
  • 以 Go 语言为例,展示了inproc[T]xproc[T]在实际代码中的使用,如在InvoiceBuilderGetInvoice函数中的应用,明确了在需要时可轻松暴露敏感信息,同时避免在跨进程上下文中误使用inproc值。
  • 提出下一步希望听取他人意见,可通过邮件、在 Hacker News 等平台评论、私信或大声喊叫等方式联系。
阅读 12
0 条评论