분류 전체보기
-
XSS공격이란보안 & 보안 2017. 1. 16. 20:27
XSS공격이란XSS(Cross-site Scripting)는 웹 상에서 가장 기초적인 취약점 공격 방법의 일종으로, 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말합니다. 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취합니다. 크로스 사이트 스크립팅이란 이름 답게, 자바스크립트를 사용하여 공격하는 경우가 많습니다. 공격 방법이 단순하고 가장 기초적이지만, 많은 웹사이트들이 XSS에 대한 방어 조치를 해두지 않아 공격을 받는 경우가 많습니다. 여러 사용자가 접근 가능한 게시판 등에 코드를 삽입하는 경우도 많으며, 경우에 따라서는 메일과 같은 매체를 통해서도 전파됩니다. 물론, HTML을 ..
-
[Python] Tip - tracemalloc으로 메모리 사용 현황과 누수를 파악언어/파이썬 & 장고 2017. 1. 15. 20:19
파이썬, 즉 CPython의 기본 구현은 참조 카운팅(reference counting)으로 메모리를 관리합니다. 참조 카운팅은 객체의 참조가 모두 해제되면 참조된 객체 역시 정리됨을 보장합니다. CPython은 자기 참조 객체가 결국 가비지 컬렉션되는 것을 보장하는 사이클 디텍터(cycle detector)도 갖추고 있습니다.이론적으로는 대부분의 파이썬 프로그래머가 프로그램에서 일어나는 메모리 할당과 해제를 걱정할 필요가 없다는 의미입니다. 즉, 언어와 CPython 런타임이 자동으로 처리합니다. 그러나 실제로 프로그램은 결국 참조 때문에 메모리 부족에 처합니다. 파이썬 프로그램이 어디서 메모리를 사용하거나 누수를 일으키는지 알아내는 건 힘든 도전과제입니다.메모리 사용을 디버깅하는 첫 번째 방법은 내장..
-
[Python] Tip - 최적화하기 전에 프로파일언어/파이썬 & 장고 2017. 1. 15. 20:00
파이썬의 동적 특징은 런타임 성능에서 놀랄 만한 동작을 보여줍니다. 느릴 것이라고 예상한 연산이 실제로는 엄청나게 빠릅니다(문자열 처리, 제너레이터). 빠를 것이라고 예상한 언어늬 특성은 실제로 매우 느립니다(속성 접근, 함수 호출). 파이썬 프로그램을 느리게 만드는 요인이 불분명할 수도 있습니다.가장 좋은 방법은 최적화하기 전에 직관을 무시하고 직접 프로그램의 성능을 측정해보는 것입니다. 파이썬은 프로그램의 어느 부분이 실행 시간을 소비하는지 파악할 수 있도록 내장 프로파일러(profiler)를 제공합니다. 프로파일러를 이용하면 문제의 가장 큰 원인에 최적화 노력을 최대한 집중할 수 있고, 속도에 영향을 주지 않는 부분은 무시할 수 있습니다.예를 들어 프로그램의 알고리즘이 느린 이유를 알고 싶다고 가정..
-
[Python] Tip - 루트 Exception을 정의해서 API로부터 호출자를 보호언어/파이썬 & 장고 2017. 1. 15. 19:22
모듈의 API를 정의할 때 사용자가 던지는 예외는 인터페이스의 일부로 정의한 함수와 클래스 만입니다.파이썬은 언어와 표준 라이브러리용 내장 예외 계층을 갖추고 있습니다. 오류를 보고할 때 자신만의 새 타입을 정의하는 대신 내장 예외 타입을 사용할 가능성이 큽니다. 예를 들어 함수에 올바르지 않은 파라미터가 넘어오면 valueError예외를 일으 킬 수 있습니다.def determine_weight(volume, density): if density
-
[Python] Tip - 모든 함수, 클래스, 모듈에 docstring을 작성언어/파이썬 & 장고 2017. 1. 15. 18:36
파이썬에서 문서화는 언어의 동적 특성 때문에 극히 중요합니다. 파이썬은 코드 블록에 문서를 첨부하는 기능을 기본으로 지원합니다. 대부분의 다른 언어와는 다르게 프로그램 실행 중에 소스 코드에 첨부한 문서에 직접 접근할 수 있습니다.예를 들어 함수의 def 문 바로 다음에 docstring을 직접 작성하여 문서를 추가할 수 있습니다.def palindrome(word): """ Return True if the given word is a palindrome. """ return word == word[::-1] # 함수의 __doc__라는 특별한 속성에 접근하면 파이썬 프로그램 자체에 포함된 docstring을 추출할 수 있음 print(repr(palindrome.__doc__)) # 결과 # '\n ..
-
[Python] Tip - 내장 알고리즘과 자료구조언어/파이썬 & 장고 2017. 1. 15. 18:16
많은 데이터를 처리하는 파이썬 프로그램을 구현하다 보면 결국 사용자가 작성한 코드의 알고리즘 복잡도 때문에 속도가 떨어지는 현상을 보게 됩니다. 이는 보통 파이썬 언어의 속도 때문에 생기는 결과가 아닙니다. 이런 문제는 최적의 알고리즘과 자료구조를 사용하지 않아서 일어났을 가능성이 더 큽니다.속도 이외에도 공통 알고리즘과 자료구조를 사용하면 좀 더 편해집니다.더블 엔디드 큐collections 모듈의 deque 클래스는 더블 엔디드 큐(double-ended queue)입니다. deque는 큐의 처음과 끝에서 아이템을 삽입하거나 삭제할 때 항상 일정한 시간이 걸리는 연산을 제공합니다. 이와 같은 기능은 선입선출(FIFO, First-In-First-Out) 큐를 만들 때 이상적입니다.from collec..
-
[Linux] chmod, chown, umask서버 2017. 1. 13. 15:01
ls -al 로 파일의 자세한 정보를 볼 수 있습니다.$ ls -la total 8 drwxr-xr-x@ 6 root staff 204 4 18 2016 . drwxr-xr-x 20 root staff 680 11 3 14:58 .. drwxr-xr-x@ 9 root staff 306 12 1 13:16 .idea -rwxr-xr-x@ 1 root staff 252 4 15 2016 manage.py drwxr-xr-x@ 8 root staff 272 11 30 10:14 queue drwxr-xr-x@ 7 root staff 238 11 30 10:14 untitled9맨앞의 문자가 - 면 파일이고 d 이면 디렉토리, l 이면 링크를 나타냅니다.r : Read = 4w : Write = 2x : eXc..
-
[Linux] 나만의 DNS(Local DNS) 등록서버 2017. 1. 9. 13:43
보통 ip주소로 웹을 실행하기 싫다면 DNS 구매하여야 하지만 로컬에 등록하여 나만 DNS를 사용하고 싶다면 /etc/hosts파일을 수정합니다. (윈도우는 잘모름.. git을 설치해서 git bash로 따라하거나 윈도우용 찾는게..)$ sudo vi /etc/hosts ## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost 10.10.10.10dns.test.com # 한 줄 추가위와 같이 입력하고 저장을..
-
[Python] Tip - 지역시간은 time이 아닌 datetime으로 표현언어/파이썬 & 장고 2017. 1. 7. 16:28
협정 세계시(UTC)는 시간대에 의존하지 않는 표준 시간 표현입니다. UTC는 유닉스 기원 이후로 지나간 초로 시간을 표현하는 컴퓨터에서 잘 동작합니다. 하지만 사람에게는 잘 맞지 않습니다. 사람이 사용하는 시간은 현재 있는 위치를 기준으로 합니다. 사람들은 'UTC, 15:00 - 7시'가 아니라 '정오' 혹은 '오전 8시'라고 말합니다. 프로그램에서 시간을 처리해야 한다면 사람이 이해하기 쉽게 UTC와 지역 시간 사이에서 변환해야 합니다.파이썬은 두 가지 시간대 변환 방법을 제공합니다. 내장 모듈 time을 사용하는 이전 방법은 치명적인 오류가 일어날 가능성이 큽니다. 내장 모듈 datetime을 사용하는 새로운 방법은 커뮤니티에서 만든 pytz 패키지의 도움을 받아 훌륭하게 동작합니다.datetim..
-
[Python] Tip - copyreg로 pickle을 신뢰할 수 있게 하기언어/파이썬 & 장고 2017. 1. 7. 15:51
내장모듈 pickle은 파이썬 객체를 스트림으로 직렬화하거나 바이트를 객체로 역직렬화하는 데 사용합니다. pickle로 만든 바이트 스트림을 신뢰할 수 없는 부분과 통신하는 데 사용하면 안됩니다. pickle의 목적은 바이너리 채널을 통해 사용자가 제어하는 프로그램 간에 파이썬 객체를 넘겨주는 것입니다.pickle 모듈의 직렬화 포맷은 설계 관점에서 안전하지 못합니다. 직렬화한 데이터는 원래의 파이썬 객체를 재구성하는 데 필요한 프로그램을 담습니다. 이는 악성 pickle 페이로드(payload)로 파이썬 프로그램에서 해당 페이로드를 역직렬화하는 부분을 망가뜨릴 수 있음을 의미합니다.이와 달리 json 모듈은 설계 관점에서 안전합니다. 직렬화된 JSON 데이터는 객체 계층에 대한 간단한 설명을 포함합니다..