728x90

IT/Django 26

django timezone과 시간 안맞는 경우

먼저 django datetime / date field에 대해서 이야기하기전에, 표준이라는 것이 있기 때문에 유연함 또한 제공될 수 있는 것이다. 표준이 없다면 중구난방으로 모든것이 만들어져서 향후에 고정된 무언가 때문에 더이상 유연성을 제공받을 수 없게 되어버린다. 그런 목적으로 django에서 시간에 관한 필드들은 UTC를 기준으로 데이터베이스에 저장되고 읽혀진다. setting 파일에서 TIME_ZONE을 설정하는 변수는 있지만 해당 변수를 수정해준다고해서 데이터베이스에 들어가는 시간 값이 UTC가 아닌 다른 타임존으로 저장되는건 아니다. 타임존을 사용하지 않고 강제로 특정 타임존으로만 저장하는 방법도 있겠지만, 향후에 국제 서비스를 제공하려는 상황이 발생한다면 큰 오버헤드가 발생할 것이다. 왜냐..

IT/Django 2021.03.29

django datetime Asia/Seoul LMT+8:28:00 STD Why not KST+9:00

Django에서 로컬시간을 가지고 db에있는 데이터 유무를 필터링 해야하는 경우가 있었다. 먼저 django에서 date는 UTC기준으로 저장된다. 이걸 강제적으로 local 시간으로 저장할 수 있는 방법도 있으나, 그렇게되면 view나 serializer에서 시간 다루기가 굉장히 까다로워진다. 예를들어 국제 서비스를 한다고하였을때 UTC기준으로 저장이 되어있지않다면 국가별로 시간을 처리하는 로직을 스스로 다 짜야할 것이다. 그러나 장고에서는 이미 멋지게도 locale에 따라서 시간을 가져올 수 있게끔 해뒀다. 나는 장고를 믿고 거래하고 있었다. 하지만 이번에 view에서 로컬시간 기준으로 db에 있는 특정 데이터를 가져오는 과정에서 시간 문제가 발생했다. 엄밀히 말하면 pytz.timezone이 예상과..

IT/Django 2021.03.17

SameSite=Lax set-cookie was blocked because it was not sent over a secure connection 보안이슈

ifuwanna.tistory.com/223 Cookie SameSite 설정하기 (Chrome 80 쿠키 이슈) 20년 2월 4일 릴리즈된 구글 크롬(Google Chrome)80버전부터 새로운 쿠키 정책이 적용 되어 Cookie의 SameSite 속성의 기본값이 "None"에서 "Lax"로 변경되었습니다. SameSite 를 None 으로 설정할 경우 모.. ifuwanna.tistory.com 황당하게도 잘 돌아가던 코드가 안되서 갑자기 동작하지 않는 일이 생겼습니다. 도무지 뭐가 문제인지 알수 없어서 이것저것 찾으며 응답헤더, 요청헤더 등도 살펴보길 몇시간... Set-Cookie 쪽에 노란색 느낌표가 떠잇고 쿠키를 덮어썼다는 내용이 있었습니다. 구글링을 한참 한뒤에야 뭐가 문제인지 알았습니다. ..

IT/Django 2021.02.26

Django ORM makemigrations과 migrate 차이 및 사용자 절차(커스텀) 적용 방법.

Django ORM이 없었더라면 난 여기까지 오지 못했다. 먼저, Django ORM은 엄청난 기능이라고 생각한다. 우리가 DB에 대해 자세히 몰라도 어느정도 수준까지 서비스를 운영할 수 있는 환경을 제공한다. 서비스가 커짐에 따라서 실제 ORM을 걷어내고 직접 데이터베이스 쿼리를 튜닝해도 될 것이다. 소규모의 개발팀이라면 많은 것들을 완벽하게 해낼 수 없기 때문에 고객과 직접적으로 맞닿아 있는 부분에 신경을 쓰고, 나머지 부분들은 범용적인 서비스를 통해서 조금은 초기 비용이 들더라도 그렇게 사용하는 것이 낫다고 생각한다. 이제 makemigrations과 migrate의 차이에 대해 알아보고자 한다. 자 모든 것들은 원리에 대한 이해가 중요하다. ORM은 앞서 말한 것처럼 DB를 추상화하여 제어할 수 ..

IT/Django 2021.02.26

DJANGO 보안의 중요성 - GPON 공격

83.135.106.98 - - [16/Feb/2021:01:45:09 +0000] "POST /GponForm/diag_Form?images/ HTTP/1.1" 301 178 "-" "Hello, World" 83.135.106.98 - - [16/Feb/2021:01:45:09 +0000] "/tmp/gpon80&ipv=0" 400 166 "-" "-" NGINX로 서버를 띄워두는데 위와같은 로그가 남아있어서 찾아봤습니다. 찾아보니 GPON Router 공격이네요. Django에서 기본적인 보안이 되어있어서 공격은 실패하고 유유히 떠나갔지만 해당 로그를보고 보안의 중요성을 새삼 깨닫습니다. Dasan GPON Routers Authentication Bypass CMD Injection - /Gpon..

IT/Django 2021.02.16
728x90