2023. 7. 27. 17:11ㆍ취업준비/[데일리과제]50문 50답
Q.
- 테스트코드에서 setup 함수와 setupclass의 차이는 무엇입니까?
- Template Engine을 사용할 때, 발생하는 CSRF Error가 무엇이고 어떻게 해결합니까?
A.테스트코드에서 setup함수와 setupclass의 차이는 무엇입니까?
[Key point]
-tearDown
-tearDownclass
[레퍼런스]
[테스트코드]단위테스트 - Fixtures(설계) - setUp()
단위테스트에서 사용하는 setUp(), testDown()에 대한 글입니다.
velog.io
https://velog.io/@cis07385/drf-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C
[drf] 테스트 코드
DRF 테스트 코드의 목적은 API의 품질을 향상시키는 것입니다.테스트 코드를 작성하면 API의 동작을 검증하고 예상하지 못한 버그를 발견할 수 있습니다.또한, 테스트 코드를 작성함으로써 개발자
velog.io
https://sjquant.tistory.com/11
파이썬 단위 테스트 모듈 unittest에 대해 알아보자
기초 TDD (Test Driven Development) 또는 Test Case를 작성하기 위한 파이썬 내장 모듈입니다. unittest.TestCase를 상속받아 Custom Test Class를 정의합니다. test_로 시작하는 함수를 정의하면 unittest가 실행되면서
sjquant.tistory.com
setup함수는 테스트할 기능의 초기 설정을 위해 사용됩니다.
setupclass는 테스트가 시행할 때 단 한번만 실행됩니다.
setupclass와 setup은 class와 def의 관계와 비슷합니다. 큰 setupclass라는 틀 안에 setup들이 들어가 있습니다.
그러니 setupclass는 한 단위의 테스트가 시작했다는 것을 알려주고 setup은 테스트 해야할 것들이라고 볼 수도 있습니다.
[예시로 보자면, 회원이라는 setupclass가 있고 게시글이라는 setupclass가 있을 때
회원 setupclass 안에는 로그인, 회원가입, 탈퇴와 같은 기능을 테스트하기 위한 name, age, id, password와 같은 setup 데이터와 실제 테스트 기능을 하는 테스트 코드가 담겨있습니다.
게시글 setupclass 안에는 게시글 CRUD와 댓글 CRUD 기능을 테스트하기 위한 user, content와 같은 setup 데이터와 실제 테스트 기능을 하는 테스트 코드가 담겨있습니다.] ->생략가능
tearDown과 tearDownclass도 비슷합니다.
tearDown은 테스트 코드가 끝났을 때, setup에서 설정한 초기값 상태로 돌려줍니다.
tearDownclass는 테스트가 종료될 때 단 한번만 실행됩니다.
setup의 경우 테스트 코드를 작성할 때, 꼭 필요하지만, tearDown의 경우는 필요의 따라 생략이 가능합니다.
tearDownclass의 경우 setupclass의 종료를 알려주는 역할을 합니다.
이러한 방식으로 테스트 환경을 구성하면 각각의 테스트 메서드가 독립적이고 격리된 환경에서 실행되며, 테스트의 신뢰성과 안정성을 보장할 수 있습니다.
A. Template Engine을 사용할 때, 발생하는 CSRF Error가 무엇이고 어떻게 해결합니까?
[Key point]
-개발자
-사용자
-공격자
[레퍼런스]
https://nordvpn.com/ko/blog/csrf/
크로스 사이트 요청 위조(CSRF)의 의미
크로스 사이트 요청 위조란 무엇일까요? 이 글에서 크로스 사이트 요청 위조의 의미와 방지 방법을 확인해 보세요
nordvpn.com
https://docs.djangoproject.com/en/4.2/howto/csrf/
Django
The web framework for perfectionists with deadlines.
docs.djangoproject.com
https://www.kisa.or.kr/skin/doc.html?fn=20221229_141434_625.pdf&rs=/result/2022-12/
Document Viewer
www.kisa.or.kr
(KISA 한국인터넷 진흥원 python_시큐어코딩 문서뷰어_48쪽부터)
CSRF Error는 {% csrf_token %} 태그를 누락하였거나 csrf 토큰이 만료되었거나, 미들웨어를 잘못 설정하였을 때 발생하는 에러입니다.
CSRF 공격은 개발자가 csrf 공격에 대비하지 않았을 때 주로 발생하며, 공격자가 만든 악성 페이지를 일반 사용자가 클릭하여 공격자가 원하는 악의적 요청을 발생시키는 것을 의미합니다.
게시글, 댓글 등으로 사용자들을 속여 악성 페이지에 접속하여 악의적 요청을 발생시키도록 유도하기도 하고, 악성 url 삽입, 리다이렉트를 통해 마찬가지로 악의적 요청을 하도록 유도합니다.
사례로는 사용자 통장에서 공격자의 계좌로 이체가 일어나는 요청을 만들어 csrf 공격에 취약한 사이트에 해당 url을 뿌립니다.
사용자가 url을 클릭한다면, 계좌이체 요청이 발생하고 공격자의 계좌로 현금이 이체됩니다.
django 프레임워크에서는 csrf token을 사용하여 crsf 공격을 예방합니다.
공격자가 악의적으로 만든 post요청에는 csrf token이 존재할 수 없기에 사용자가 만일 해당 url이나 기타 방법으로 해당 공격에 걸려도 제출할 token이 없으므로 403에러를 통해 해당 요청을 거부합니다.
Q.
- Django ORM에서 queryset과 object의 차이점에 대해서 설명하시오
- Django ORM에서 정참조와 역참조에 대해서 설명하시오
A. Django ORM에서 queryset과 object의 차이점에 대해서 설명하시오
[Key point]
-DB
-객체
[레퍼런스]
http://wiki.hash.kr/index.php/%EA%B0%9D%EC%B2%B4
객체 - 해시넷
객체(客體) 또는 오브젝트(object)란 객체 지향 프로그래밍(OOP)에서 클래스(class)가 실제로 구현된 인스턴스(instance)를 말한다. 즉, 객체란 클래스를 인스턴스화한 것이다. 절차적 프로그래밍과 달
wiki.hash.kr
object는 객체이다, 한 사이트의 회원 정보 중 한 명의 회원의 정보를 객체라고 할 수 있습니다. 여러 게시글 중 하나의 게시글을 객체라고 할 수 있습니다.
즉, django에서 객체란 하나의 모델이 가진 필드를 만족하여 만들어진 데이터를 객체(object)라고 볼 수 있습니다.
queryset은 이러한 객체들의 묶음으로 Articles 모델의 queryset은 수 많은 게시글들의 묶음이라 볼 수 있습니다.
drf에서 queryset을 통해 Genericview에서 필요한 데이터를 조회할 수 있으며 페이지네이션 기능도 쉽게 적용 할 수 있습니다.
A.Django ORM에서 정참조와 역참조에 대해서 설명하시오
[Key point]
-related_name
-FK
[레퍼런스]
https://junghogit.github.io/django/django-orm-relation/
django 정참조와 역참조
관계된 데이터에 접근하는 법
junghogit.github.io
https://blog.hwahae.co.kr/all/tech/tech-tech/4108
DRY를 위해 Django Manager를 적용해봅시다. – 화해 블로그 | 기술 블로그
화해팀의 백엔드 플랫폼에서는 다양한 언어와 프레임워크를 사용하여 개발을 진행해 나가고 있습니다. 그중 가장 많이 사용되고 있는 웹 프레임워크는 Django입니다. ORM QuerySet을 적극적으로 사
blog-wp.hwahae.co.kr
게시글 모델과 댓글 모델이 있을 때 보통 댓글 모델에서 게시글 모델의 FK를 통해 참조관계를 맺습니다.이 때, 댓글에서 FK를 통해 게시글에 접근하는 것을 정참조, 그 반대의 경우를 역참조라고 합니다.역참조를 하기 위해서는 related_name 속성을 사용할 수 있습니다. django의 경우 Manager를 통해 임의로 related_name을 설정하지 않는다면 ~~_set의 형태로 related_name을 설정해 줍니다.하지만, FK가 많아질 경우 에러가 발생하기에 별도의 related_name을 설정해 주는 것이 좋습니다.
Q.
- Response 결과와 함께 status code를 반환하는 이유는 무엇입니까?
- 회원탈퇴, 게시글 삭제와 같은 기능을 구현할 때 실제 레코드를 삭제합니까? 그렇지 않다면 그 이유는 무엇입니까?
A.Response 결과와 함께 status code를 반환하는 이유는 무엇입니까?
[Key point]
-http 상태메세지
[레퍼런스]
https://doomed-lab.tistory.com/15
HTTP 상태 메세지 정리
브라우저가 웹 서버의 서비스를 요청할 때, 오류가 발생할 수 있습니다. 다음은 반환 될 수있는 HTTP 상태 메시지 목록입니다. 1xx: Information Message: Description: 100 Continue 서버가 요청 헤더를 수신했
doomed-lab.tistory.com
개발자의 경우 상태메시지를 통해 어디서 에러가 발생하였는지 어떤 것이 원인이 되어 에러가 발생하였는지 쉽게 확인 할 수 있고 그에따른 해결책을 구현할 수 있습니다.
사용자의 경우 사이트를 이용 중 해당 메시지를 통해 문의를 보낸다면, 관련 지식이 없더라도 해당 문제 상황에 대하여 쉽게 설명이 가능하고 이를 통해 빠르고 정확한 해결방안을 제시 받을 수 있습니다.
이렇듯 상태 코드를 response 결과와 함께 받는 이유는 문제의 원인을 빠르게 캐치하여 정확한 해결방법으로 원인을 제거하기 위해서 입니다.
A.회원탈퇴, 게시글 삭제와 같은 기능을 구현할 때 실제 레코드를 삭제합니까? 그렇지 않다면 그 이유는 무엇입니까?
[Key point]
-운영정책
[레퍼런스]
https://hyeyun133.tistory.com/entry/02-%ED%9A%8C%EC%9B%90%EA%B4%80%EB%A6%AC-%EC%A0%95%EC%B1%85
02. 회원 정책 정의
1단계: 회원 관련 용어 정의하기 보통 서비스 이용약관을 보면 [용어의 정의] 항목이 있다. 그래서 육육걸즈(카페24) / 지그재그의 서비스 이용약관을 참고해서 회원 용어를 정의했다. 서비스 이
hyeyun133.tistory.com
https://www.catchsecu.com/archives/13133
개인정보 보유 기간은 언제까지일까? (feat. 개인정보 침해 사례) | 캐치시큐
동의 받고 수집한 개인정보도 보유 기간을 정해야 합니다. 이용 목적이 달성 되면 개인정보를 즉시 지워야 하는데요. 보관하는 목적에 정당한 근거가 없거나, 기간이 지났는데도 개인정보를 삭
www.catchsecu.com
https://www.pipc.go.kr/np/default/page.do?mCode=H030000000
개인정보보호위원회
옆으로 밀어 확인해 주세요. 주요 개인정보 처리 표시 【주요 개인정보 처리 표시(라벨링)】 일반 개인정보 수집 ※세부항목은 개인정보 처리방침 본문 확인 개인정보 처리목적 개인정보의 보
www.pipc.go.kr
별도의 이유가 없다면, 회원탈퇴나 게시글 삭제 시 해당 오브젝트의 상태를 False를 사용하거나 기타 이외의 방법을 통해 보관을 합니다.
사용자 변심이나, 증거의 형태로 해당 데이터가 다시 필요해질 경우가 발생하기 때문에 삭제를 하지 않고 데이터 접근을 차단하거나, 권한을 통해 접근할 수 있게 함으로 데이터를 보존합니다.
물론 개인정보를 무기한 보관할 수 는 없습니다.
법에 따라 개인의 정보가 어떻게 이용되는지, 언제까지 보관되는지 약관을 통해 고지해야 하고 지겨야 합니다.
해당 보관기간이 만료된다면, 데이터를 삭제하여 db의 부하를 방지합니다.
'취업준비 > [데일리과제]50문 50답' 카테고리의 다른 글
[데일리과제] 50문 50답 -6 (0) | 2023.07.31 |
---|---|
[데일리과제] 50문 50답 -4 (0) | 2023.07.24 |
[데일리과제] 50문 50답 -3 (0) | 2023.07.21 |
[데일리과제] 50문 50답 -2 (0) | 2023.07.20 |
[데일리과제] 50문 50답 -1 (0) | 2023.07.19 |