Skip to content

Instantly share code, notes, and snippets.

@masarakki
Last active August 29, 2015 14:00
Show Gist options
  • Save masarakki/11055429 to your computer and use it in GitHub Desktop.
Save masarakki/11055429 to your computer and use it in GitHub Desktop.
ぼくのかんがえるさいきょうのじゅうしょシステム

ぼくのかんがえるさいきょうのじゅうしょシステム

住所というシステムは脆弱でクソだ

住所システムの問題点

  • 住所は住んでいる場所を一意に特定するための一次情報だ
  • 文字列を知るだけで脅迫状でも爆弾でも送り放題
  • 受取の拒否をコントロールしづらい
  • その脆弱な文字列を色々なサービスに登録しないといけない
  • なにか問題があっても一次情報なので変更しづらい

解決方法

  • 住所システムのラッパーとなるシステムを作る
  • そのシステムのIDは住んでいる場所が特定できない2次情報の住所となる
  • 実際に住所にアクセスする必要のある宅配業者にのみ住所閲覧の権限を移譲する
  • 宅配業者は逆に住所以外の情報を一切知ってはいけない
  • 荷物一つ一つについて住所閲覧の accept/reject ができる

システム

OAuthベースの権限移譲システム

Webベースのフロー

登場人物

  • ユーザ
  • 当システム
  • ショップ
  • 宅配業者
  1. ショップでユーザが買い物をする
  2. ユーザは宅配業者を選択する
  3. ショップは宅配業者に品物の配達を依頼する
  4. 宅配業者はショップにワンタイムトークンを発行する
  5. ショップはワンタイムトークンを含む宅配業者のWebページをユーザに伝える
  6. 宅配業者はユーザに当システムのOAuth認証をさせる
  7. ユーザは荷物を受け取る意思があるならOAuth認証する
  8. 宅配業者はAPIでユーザの住所を知る
  9. 宅配業者は宅配する

非Webベースのフロー(普通の荷物配達)

Webベースの 3. から始まる

その場合荷物の送り主はメール等でユーザにURLを伝える手段があることが前提(知らない人から荷物が送りつけられてくることがない) 宅配業者の選択もそのチャネルでやれ

宅配ピザとか自社配達系

OAuthでログインさせるだけでおk

本当に安全か?

  • 全くコンタクトチャネルのない人から荷物が送られてくることはない
  • 日常生活でサービスに登録するのに住所を書く必要がない
  • チャネルを1つ確保すればいい たぶんemail addressになる
  • 必ず承認を必要とするのでダイレクトメール送っていいですか? というダイレクトemailが増える気がする そこはめんどい
  • 最終的に自分の住所を知らなくて済む 住所という概念が消える
  • 宅配業者を信頼するしか無い それは既存システムの脆弱性と変わらない
@egglang
Copy link

egglang commented Apr 18, 2014

引っ越ししても困らない。なんて便利。

@masarakki
Copy link
Author

それも変えるのめんどくさいよねぇ・・・

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment