

http://localhost:8000/api/v1/member/scraps/free/26
포스트맨으로 날리면 스크랩이 정상적으로 됩니다. 비밀글 읽기 권한이 없어도 스크랩 되는게 맞는건지 혹은 기획 방향이 맞는지는 잘 모르겠습니다.
아 물론 스크랩은 되도 읽기는 안됩니다.
어제 재현이 어렵다고 하신 내용은 아래에 추가 설명 하였습니다.


실제로 있는 게시글이며, body 필수 사항이 누락되었다고 말하고 있습니다.

파라미터에는 게시판 테이블 명 / 글 아이디를 포함하라고 안내 됩니다. 필수로
그렇지만, 아무거나 입력 해도 ... 스크랩이 가능합니다.

즉 필수 사항을 무력화 된다라고 보시면 됩니다. 위에 지금 스샷은 bo_table + wr_id 파라미터가 없음에도 스크랩이 정상적으로 됩니다.

http://localhost:8000/api/v1/member/scraps/free/26
포스트맨으로 날리면 스크랩이 정상적으로 됩니다. 비밀글 읽기 권한이 없어도 스크랩 되는게 맞는건지 혹은 기획 방향이 맞는지는 잘 모르겠습니다.
아 물론 스크랩은 되도 읽기는 안됩니다.
어제 재현이 어렵다고 하신 내용은 아래에 추가 설명 하였습니다.


실제로 있는 게시글이며, body 필수 사항이 누락되었다고 말하고 있습니다.

파라미터에는 게시판 테이블 명 / 글 아이디를 포함하라고 안내 됩니다. 필수로
그렇지만, 아무거나 입력 해도 ... 스크랩이 가능합니다.

즉 필수 사항을 무력화 된다라고 보시면 됩니다. 위에 지금 스샷은 bo_table + wr_id 파라미터가 없음에도 스크랩이 정상적으로 됩니다.
댓글 1개
KimTom89
1년 전
@seiblog-nandsoft
필수사항이라고 말씀하신 `bo_table`과 `wr_id` 값은 Request Body가 아닌 **경로(Path)** 에서 값을 전달하는 것이며
`wr_content` 값은 **요청 본문(Request Body)** 으로 전달되는 값 입니다.
요청 본문(Body)에 Field 값이 누락되었다고 나오는 원인은 `wr_content` 전달이 누락되었기 때문에 나오는 것입니다.
`wr_content`값은 빈값 여부와 상관없이 전달되야 합니다.
```
{
wr_content: ""
}
```

그리고 #545 에서도 말씀드렸다시피, 요청 본문에서는 `api/v1/models/scrap.py` > `CreateScrap` 클래스에 선언된 `wr_content` 외의 변수들은 입력 여부와 관계 없이 무시되고 처리됨을 알려드립니다.
``` python
class CreateScrap(BaseModel):
"""스크랩 생성 모델"""
wr_content: str = Body(
default="",
title="댓글",
description="스크랩 시 추가할 댓글 내용"
)
@field_validator('wr_content', mode='after')
@classmethod
def sanitize_wr_content(cls, v: str):
"""댓글 내용 Stored XSS 방지 필터링"""
return sanitizer.get_cleaned_data(v)
```
마지막으로 비밀글 읽기 권한이 없는 글은 스크랩 하지 못하도록 유효성 검사를 추가해서 다음 패치때 적용하도록 하겠습니다.
감사합니다 :)
필수사항이라고 말씀하신 `bo_table`과 `wr_id` 값은 Request Body가 아닌 **경로(Path)** 에서 값을 전달하는 것이며
`wr_content` 값은 **요청 본문(Request Body)** 으로 전달되는 값 입니다.
요청 본문(Body)에 Field 값이 누락되었다고 나오는 원인은 `wr_content` 전달이 누락되었기 때문에 나오는 것입니다.
`wr_content`값은 빈값 여부와 상관없이 전달되야 합니다.
```
{
wr_content: ""
}
```

그리고 #545 에서도 말씀드렸다시피, 요청 본문에서는 `api/v1/models/scrap.py` > `CreateScrap` 클래스에 선언된 `wr_content` 외의 변수들은 입력 여부와 관계 없이 무시되고 처리됨을 알려드립니다.
``` python
class CreateScrap(BaseModel):
"""스크랩 생성 모델"""
wr_content: str = Body(
default="",
title="댓글",
description="스크랩 시 추가할 댓글 내용"
)
@field_validator('wr_content', mode='after')
@classmethod
def sanitize_wr_content(cls, v: str):
"""댓글 내용 Stored XSS 방지 필터링"""
return sanitizer.get_cleaned_data(v)
```
마지막으로 비밀글 읽기 권한이 없는 글은 스크랩 하지 못하도록 유효성 검사를 추가해서 다음 패치때 적용하도록 하겠습니다.
감사합니다 :)
게시글 목록
| 번호 | 제목 |
|---|---|
| 232 | |
| 230 | |
| 228 | |
| 226 | |
| 225 | |
| 224 | |
| 222 | |
| 221 | |
| 212 | |
| 211 | |
| 209 | |
| 208 | |
| 207 | |
| 206 | |
| 202 | |
| 201 | |
| 200 | |
| 199 | |
| 198 | |
| 197 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기