본문 바로가기

전체 글

(146)
[DRF] 테스트 케이스 (test case) django 테스트 케이스와 비슷하다. api 테스트를 돕는다. from rest_framework import status from rest_framework.test import APITestCase from django.urls import reverse class LocationTestCase(APITestCase): def setUp(self): self.test_url = reverse('location') def test_status(self): data = { 'lon': 126.9784039920235, 'lat': 37.566627074987274, 'limit': 1, 'user_id': "asdf" } response = self.client.get(self.test_url, dat..
[Django] render 함수 (render function) 장고 초창기 많은 튜토리얼들을 따라 하다 보면, templates에 저장해둔 html 파일들을 가져다 쓸 때 render라는 함수를 이용한다. def todo_list(request): # complete 열이 False인 행만 가져온다. todo = Todo.objects.filter(complete__exact=False) return render(request, 'base/todo_list.html', {'todo': todo}) 대충 뭐해주는 친구인지는 알겠는데.. 정확히 뭘 하는 함수일까? request는 왜 인자로 넣어줄까? 등등 render에 대한 모든 궁금증을 파헤쳐 보자. 프레임워크를 이용하며 모르는 함수가 생겼을 땐 항상 가장먼저 "공식 문서"를 읽어본다. 이후 여러 블로그들을 참조하며..
[Django] ORM & migration 장고에서 ORM(Object Relational Mapping)은 DB 관리를 위해서 반드시 알아두어야 할 상식이다. ORM은 전통적으로 우리가 DB를 관리하기 위해 DDL이나 DML을 직접 입력해 사용하던 것을 프로그래밍 언어를 통해 통일성 있게 작성해 주는 방법이다. DDL, DML을 이용할 경우 DB 관리자마다 사용하는 쿼리문들이 다르다. 그로 인해 검색 효율성 등이 떨어질 수 있다.(특히 나와 같이 미숙한 개발자들은..) 장고의 ORM을 이용하게 되면 우리는 이런 거 이런 거 만들어주세요! 하면 알아서 제일 효율적인 방법으로 만들고, 검색해준다. ORM은 파이썬 장고에만 국한된 것이 아니라 다양한곳에 사용되고 있다. 장고 ORM의 경우 조금 불편한 점이 몇가지 있다면, 복합 키 구성이 안되고, P..
[DRF] serializer (django-restframework 시리얼라이저) DRF의 핵심 내용 중 하나인 serializer가 무엇인지 알아보고 어떻게 사용해야 되는지 정리해 보았다. serialization은 "직렬화"라는 뜻이다. 시리얼라이저는 직렬화 시키다. 즉 어떤 데이터를 특정한 포장지를 이용해 감싸주는 도구이다. 시리얼라이저를 사용함으로써 데이터를 정형화 시킬 수 있다. 데이터를 정형화시키게 되면 당연히 통신에도 편하고 데이터 불러오기, 저장 등등에 편리하게 이용할 수 있다. 시리얼라이저는 querysets, db 데이터 인스턴스와 같은 복잡한 데이터들을 파이썬 JSON, XML과 같은 데이터 타입으로 쉽게 변환될 수 있게 해 준다. 아래는 간단한 시리얼라이즈 예시이다. 클래스에 있는 어트리뷰트들을 db에 저장하기 위해, 네트워크를 통해 전달하기 위해 데이터를 정형화..
ARP spoofing (Address Resolution Protocol) ARP 스푸핑 MITM(Main In The Middle) 기법 중 하나이다. 사람들 사이에서 데이터를 몰래 훔쳐본다는 뜻이다. ARP 스푸핑이 무엇인지 알기 위해선 우선 ARP 가 무엇인지 알아야 한다. ARP(Address Resolution Protocol) 란? ARP는 IP 주소를 MAC 주소와 매칭 시키기 위한 프로토콜이다. 송신하는 노드는 수신하는 노드의 IP datagram을 갖고 있다. 그런데 다음 노드의 IP address가 Data Link Layer로 이동하는 경우에는 쓸모가 없다. 이때 우리는 다음 노드의 DLC 즉 MAC 주소를 알아야 한다. 이 MAC 주소를 알아내기 위해 ARP를 사용한다.라고 설명되어 있는데 조금 더 쉽게 풀어보자. 더보기 datagram - IP 계층의 패킷 대부분의 가..
백준 2638 치즈 C++ [골드3] 문제 N×M의 모눈종이 위에 아주 얇은 치즈가 과 같이 표시되어 있다. 단, N 은 세로 격자의 수이고, M 은 가로 격자의 수이다. 이 치즈는 냉동 보관을 해야만 하는데 실내온도에 내어놓으면 공기와 접촉하여 천천히 녹는다. 그런데 이러한 모눈종이 모양의 치즈에서 각 치즈 격자(작 은 정사각형 모양)의 4변 중에서 적어도 2변 이상이 실내온도의 공기와 접촉한 것은 정확히 한시간만에 녹아 없어져 버린다. 따라서 아래 모양과 같은 치즈(회색으로 표시된 부분)라면 C로 표시된 모든 치즈 격자는 한 시간 후에 사라진다. 와 같이 치즈 내부에 있는 공간은 치즈 외부 공기와 접촉하지 않는 것으로 가정한다. 그러므 로 이 공간에 접촉한 치즈 격자는 녹지 않고 C로 표시된 치즈 격자만 사라진다. 그러나 한 시간 후, ..
크로스 사이트 스크립팅(Cross Site Scripting, XSS) 공격자가 공격하려는 웹 사이트에 악성 스크립트를 넣는 기법이다. 웹 사이트에 악성 스크립트를 넣어 해당 사이트에 접속하는 유저의 쿠키, 세션 토큰 등의 민감한 정보를 탈취한다. 이 공격을 이용해 사용자의 쿠키 등을 탈취하여 CSRF 공격까지 이어지는 경우도 있다. 자바스크립트를 사용하여 공격하는 경우가 가장 많다. XSS 공격은 크게 두 가지 방법으로 나뉜다. 아래의 두 가지 이외에도 다양한 방법이 존재한다. 공격 방법 1. Stored XSS (Persistent XSS) 공격자의 악성 스크립트가 서버에 저장되어 지속적인 공격이 가능하므로 Stored XSS 라고 부른다. 웹 사이트 게시판, 댓글 등에 악성 스크립트를 작성하여 공격하는 방식이다. 공격자가 게시판에 공격 스크립트를 작성하면, 서버는 해당..
악성 스크립트 스크립트(Script)란? 다른 프로그램에 의해 번역되거나 수행되는 프로그램이나 명령어들의 나열. 기존에 존재하는 소프트웨어를 제어하는 용도로 사용하는 명령어나 프로그램. 악성 스크립트란? 스크립트 언어로 작성된 웜, 바이러스, 트로이 목마 같은 악성 프로그램들을 뜻한다. 스크립트 언어를 사용하면 파일 기반 악성코드로 할 수 있는 기능을 동일하게 구현하고, 보안 툴 탐지 기능을 피해 나갈 수 있다.