

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)
```
마지막으로 비밀글 읽기 권한이 없는 글은 스크랩 하지 못하도록 유효성 검사를 추가해서 다음 패치때 적용하도록 하겠습니다.
감사합니다 :)
게시글 목록
| 번호 | 제목 |
|---|---|
| 194 | |
| 186 | |
| 183 | |
| 182 | |
| 180 | |
| 177 | |
| 176 | |
| 175 | |
| 174 | |
| 173 | |
| 172 | |
| 171 | |
| 170 | |
| 167 | |
| 166 | |
| 165 | |
| 162 | |
| 161 | |
| 158 | |
| 157 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기