feat: 가상화 문서들 추가
This commit is contained in:
@@ -13,11 +13,11 @@
|
||||
"long_description": "왼쪽의 BFF CSRF endpoint에서 두 결과가 갈라진다. XSRF-TOKEN cookie에는 raw token이 저장되고 JSON body에는 XOR와 Base64로 masked된 token 및 headerName이 담긴다. 두 결과는 SPA의 POST 조립 단계로 모이지만, JSON에서는 headerName만 사용하고 실제 X-XSRF-TOKEN 값은 document.cookie에서 읽은 raw token이다. POST에는 같은 raw 값을 가진 cookie와 header가 함께 도달하고 Spring CSRF filter가 일치 여부를 확인한다.",
|
||||
"source_context": {
|
||||
"document": "document.md",
|
||||
"document_sha256": "df4d1a604c74e756672b5b40510abfedb8c67b39af280a5f51985ea9972f5371",
|
||||
"document_sha256": "e2cc061f683294c937f089ad874cbf7a617f7313c07a92c2148fb11287a0da37",
|
||||
"anchor": {
|
||||
"kind": "marker",
|
||||
"value": "ap3-csrf-boundary",
|
||||
"line": 858
|
||||
"kind": "heading",
|
||||
"value": "AP3 완주: session cookie가 BFF의 downstream Bearer가 되기까지",
|
||||
"line": 681
|
||||
}
|
||||
},
|
||||
"composition": {
|
||||
@@ -39,8 +39,8 @@
|
||||
"description": "CookieCsrfTokenRepository와 CsrfController를 통해 raw cookie와 masked JSON 응답을 만드는 endpoint.",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 819,
|
||||
"end_line": 844
|
||||
"start_line": 855,
|
||||
"end_line": 880
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
@@ -60,12 +60,12 @@
|
||||
"description": "Cookie repository가 path /에 설정하며 SPA가 document.cookie로 읽는 raw CSRF token.",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 827,
|
||||
"end_line": 834
|
||||
"start_line": 863,
|
||||
"end_line": 870
|
||||
},
|
||||
{
|
||||
"start_line": 844,
|
||||
"end_line": 856
|
||||
"start_line": 880,
|
||||
"end_line": 892
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
@@ -79,13 +79,13 @@
|
||||
"details": [
|
||||
"token = XOR/Base64",
|
||||
"headerName metadata",
|
||||
"POST token 값으로 미사용"
|
||||
"POST 헤더 미사용"
|
||||
],
|
||||
"description": "Request attribute용 token을 masked한 JSON 표현으로, SPA는 token 값이 아니라 headerName만 사용한다.",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 836,
|
||||
"end_line": 846
|
||||
"start_line": 872,
|
||||
"end_line": 882
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
@@ -103,12 +103,12 @@
|
||||
"description": "Raw cookie 값을 X-XSRF-TOKEN header에 넣어 preference POST를 만드는 browser code.",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 846,
|
||||
"end_line": 856
|
||||
"start_line": 882,
|
||||
"end_line": 892
|
||||
},
|
||||
{
|
||||
"start_line": 862,
|
||||
"end_line": 870
|
||||
"start_line": 898,
|
||||
"end_line": 906
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
@@ -126,16 +126,16 @@
|
||||
"description": "Repository의 expected raw token과 submitted raw header를 controller 실행 전에 비교하는 방어선.",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 854,
|
||||
"end_line": 854
|
||||
"start_line": 890,
|
||||
"end_line": 890
|
||||
},
|
||||
{
|
||||
"start_line": 873,
|
||||
"end_line": 873
|
||||
"start_line": 909,
|
||||
"end_line": 909
|
||||
},
|
||||
{
|
||||
"start_line": 897,
|
||||
"end_line": 904
|
||||
"start_line": 933,
|
||||
"end_line": 940
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
@@ -150,8 +150,8 @@
|
||||
"kind": "response",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 827,
|
||||
"end_line": 834
|
||||
"start_line": 863,
|
||||
"end_line": 870
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
@@ -164,8 +164,8 @@
|
||||
"kind": "response",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 836,
|
||||
"end_line": 844
|
||||
"start_line": 872,
|
||||
"end_line": 880
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
@@ -174,13 +174,13 @@
|
||||
"id": "raw-cookie-to-assembler",
|
||||
"from": "raw-cookie",
|
||||
"to": "post-assembler",
|
||||
"label": "document.cookie · raw",
|
||||
"label": "raw cookie",
|
||||
"kind": "data",
|
||||
"emphasis": "primary",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 846,
|
||||
"end_line": 856
|
||||
"start_line": 882,
|
||||
"end_line": 892
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
@@ -189,12 +189,12 @@
|
||||
"id": "masked-json-to-assembler",
|
||||
"from": "masked-json",
|
||||
"to": "post-assembler",
|
||||
"label": "headerName only",
|
||||
"label": "headerName",
|
||||
"kind": "data",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 846,
|
||||
"end_line": 856
|
||||
"start_line": 882,
|
||||
"end_line": 892
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
@@ -203,13 +203,13 @@
|
||||
"id": "assembler-to-filter",
|
||||
"from": "post-assembler",
|
||||
"to": "csrf-filter",
|
||||
"label": "Cookie raw = Header raw",
|
||||
"label": "raw 대조",
|
||||
"kind": "request",
|
||||
"emphasis": "primary",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 848,
|
||||
"end_line": 873
|
||||
"start_line": 884,
|
||||
"end_line": 909
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
|
||||
Reference in New Issue
Block a user