KDOC 644: Recordを外部値がくるところで使うとプロトタイプを書き換えられる

この文書のステータス

  • 作成
    • 2026-10-03 貴島
  • レビュー
    • 2026-10-03 貴島

概要

TypeScriptのRecord型は型だけの存在で、実行時の値はプロトタイプを持つ普通のオブジェクトである。

Record<Keys, Type>はプロパティのキーがKeysであり、プロパティの値がTypeであるオブジェクトの型を作るユーティリティ型です。

Record<Keys, Type> | TypeScript入門『サバイバルTypeScript』

オブジェクトはプロトタイプを持つので、 Record の値に外部から来たキーで書き込むと、プロトタイプを書き換えられる。

Object Security

Setting user-provided key-value pairs on an Object may allow an attacker to override the object’s prototype, which can lead to object injection attacks or prototype pollution attacks. Like the accidental keys issue, this can also be mitigated by using a null-prototype object.

Map#objects vs maps - JavaScript | MDN

関連

  • 追加調査: プロトタイプ汚染を試す