Skip to content

Commit

Permalink
add code tour
Browse files Browse the repository at this point in the history
  • Loading branch information
kenfdev committed Dec 13, 2022
1 parent 3f8a15f commit 4e2084d
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 2 deletions.
81 changes: 81 additions & 0 deletions .tours/2010-vulnerable-auth.tour
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
{
"$schema": "https://aka.ms/codetour-schema",
"title": "2010 Vulnerable Auth Walkthrough",
"steps": [
{
"file": "50_auth/00_start/ui/src/router/index.js",
"description": "ホーム画面(タスク一覧)とログイン画面がある",
"line": 6
},
{
"file": "50_auth/00_start/ui/src/router/index.js",
"description": "ログイン画面ではない場合は、ユーザーがログインしている必要がある",
"line": 25
},
{
"file": "50_auth/00_start/ui/src/pages/LoginPage.vue",
"description": "ログインできるかAPIにリクエストする",
"line": 28
},
{
"file": "50_auth/00_start/api/src/server.js",
"description": "ログインのPOSTリクエストを受け取れるようにしている",
"line": 13
},
{
"file": "50_auth/00_start/api/src/handlers/handleLogin.js",
"description": "このデモアプリではデータベースは用意しておらず、簡易的にインメモリのオブジェクトで代替している(本来はここでデータベースにリクエストする)",
"line": 7
},
{
"file": "50_auth/00_start/api/src/handlers/handleLogin.js",
"description": "ユーザーが見つかったらユーザー情報を返す",
"line": 14
},
{
"file": "50_auth/00_start/ui/src/composables/useSubmitLogin.js",
"description": "ユーザー情報が取得できたら後から使えるように保存しておく",
"line": 13
},
{
"file": "50_auth/00_start/ui/src/pages/LoginPage.vue",
"description": "ログインが成功したらホーム画面に遷移する",
"line": 31
},
{
"file": "50_auth/00_start/ui/src/pages/HomePage.vue",
"description": "ホーム画面ではタスク一覧を取得し、表示している",
"line": 30
},
{
"file": "50_auth/00_start/ui/src/pages/HomePage.vue",
"description": "タスクの状態が「起票(created)」で、ログインユーザーが「マネージャー(manager)」であれば「承認可能である」という情報を加える",
"line": 35
},
{
"file": "50_auth/00_start/ui/src/pages/HomePage.vue",
"description": "承認可能であれば、承認ボタンを表示する。ロールが「メンバー」の場合はこのボタンが表示されることはない。",
"line": 11
},
{
"file": "50_auth/00_start/ui/src/pages/HomePage.vue",
"description": "承認ボタンが押されたらAPIにリクエストを投げます",
"line": 40
},
{
"file": "50_auth/00_start/api/src/server.js",
"description": "特定のタスクに関する更新情報を受取るAPI",
"line": 17
},
{
"file": "50_auth/00_start/api/src/handlers/handleTasks.js",
"description": "与えられた情報でタスクを更新し、レスポンスを返します",
"line": 7
},
{
"file": "50_auth/00_start/ui/src/pages/HomePage.vue",
"description": "タスクの更新に成功したら最新のタスク一覧を再取得します",
"line": 44
}
]
}
16 changes: 16 additions & 0 deletions .tours/2011-vulnerable-auth-review.tour
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"$schema": "https://aka.ms/codetour-schema",
"title": "2011 Vulnerable Auth Review",
"steps": [
{
"file": "50_auth/00_start/ui/src/pages/HomePage.vue",
"description": "権限のロジックがフロントエンドにある",
"line": 35
},
{
"file": "50_auth/00_start/api/src/handlers/handleTasks.js",
"description": "APIが「誰からのリクエスト」なのかを把握できておらず、渡ってきた情報もそのまま適用している。\nPostmanのような手段を使えば、誰でも好きな情報をリクエストできてしまう。\n\n例\n`http://localhost:8888/tasks/task-1`\n\n```json\n{\n\t\"hoge\": \"moge\",\n\t\"moge\": \"piyo\",\n\t\"status\": \"hogehoge\"\n}\n```",
"line": 17
}
]
}
4 changes: 2 additions & 2 deletions .tours/2020-auth-improved.tour
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
{
"file": "50_auth/10_improved/api/src/server.js",
"description": "サーバーサイドにはだいたいの場合ミドルウェアという仕組みがあり、リクエストの処理の途中で挟む処理を実装できる。\n「ログイン済みのユーザーのみ使えるAPI」などは、ミドルウェアを使って共通処理を行う。",
"line": 9
"line": 10
},
{
"file": "50_auth/10_improved/api/src/server.js",
"description": "authorizeRequestのミドルウェアがあるおかげで、Authorizationヘッダーの無い(ログインしていない)リクエストは受け付けなくなる",
"line": 38
"line": 40
},
{
"file": "50_auth/10_improved/api/src/handlers/handleTasks.js",
Expand Down

0 comments on commit 4e2084d

Please sign in to comment.