분류 전체보기
-
무차별 대입 공격 (Brute Force Attack)보안 & 보안 2017. 3. 27. 21:04
개요무차별 대입 공격이란 조합 가능한 모든 문자열을 하나씩 대입해 보는 방식으로 문제를 푸는 것인데, 얼핏 무식하다고 생각할 수도 있겠지만 항상 정확도 100%를 보장한다는 점에서, 자원만 충분하면 가장 무서운 방법입니다. 이론적으로 가능한 모든 경우의 수를 다 검색해 보는 것이라 정확도 100%가 항상 보장되니, 암호학에서는 가장 확실한 방법으로 통용되고 있습니다. 무엇보다도 암호 확인 작업이라는 것이 손으로 입력한 문자열의 동일 여부를 확인하는 것이기 때문에, 가능한 경우를 하나씩 대입하다 보면 언젠가는 암호를 찾을 수 있게 되는 식입니다. 다만 정말로 그냥 무식하게 하는건 아니고, 숫자만 섞어서 대입해보기 한번, 로마자만 섞어서 대입해보기 한번 이런식으로 하다가 안되면 나머지를 순차적으로 하는 식으..
-
SSL (Secure Socket Layer)보안 & 보안 2017. 3. 27. 20:27
넷스케이프사가 개발한 인터넷 상에서 정보를 암호화하여 송수신하는 프로토콜입니다. WWW나 FTP등의 데이터를 암호화하여 프라이버시에 관한 정보나 크레딧카드 번호, 기업 비밀등을 안전하게 송수신할 수 있습니다. SSL은 공개키 암호나 비밀키암호, 디지털 증명서, 해쉬함수등의 시큐리티 기술을 조합하여 데이터의 도청이나 변경, 위장을 방지할 수가 있습니다. OSI 모델에서는 세션(5계층)과 트랜스포트(4계층)의 사이에서 동작하여 상위 프로토콜을 이용하는 어플리케이션에서는 특별히 의식할 필요없이 투과적으로 이용할 수 있습니다.
-
[Linux] SSH (Secure Shell)서버 2017. 3. 27. 20:26
SSH는 안전한 원격 통신을 위해 사용됩니다. SSH가 사용되기 이전에는 텔넷(Telnet)이 사용되었습니다. 텔넷 통신에는 기본적으로 23번 포트가 사용되는데 통신에서 데이터를 암호화하는 과정이 없기 때문에 같은 네트워크 상의 누군가가 통신을 가로챈다면 내용을 모두 엿볼 수 있다는 문제가 존재했습니다. 이러한 보안 상의 문제로 SSH가 설계, 개발된 것 입니다. SSH는 암호화 기법을 사용하기 때문에 누군가 통신을 가로챈다고 하더라도 암호화된 텍스트로 보이게 됩니다. 기본적으로 22번 포트가 사용되며 주로 리눅스, 유닉스 시스템에서 사용됩니다.
-
[Python] len()과 sys.getsizeof() 차이점언어/파이썬 & 장고 2017. 3. 27. 19:55
len()은 컨테이너에 포함된 항목의 수를 계산합니다. 다시 말해 문자열일 경우 문자의 길이를 반환하고 컨테이너타입인 튜플, 딕셔너리, 리스트의 경우는 속해있는 값의 개수를 반환합니다.반면 sys.getsizeof()는 객체의 메모리 사이즈를 바이트 단위로 반환합니다. 객체는 모든 유형이 될 수 있습니다.파이썬 문자열 객체는 문자 당 1바이트의 간단한 문자 시퀀스가 아닙니다. 특히, sys.getsizeof()함수에는 가비지 컬렉터의 오버헤드(아마 1바이트)가 포함되어 출력됩니다. getsizeof()는 object의 __sizeof__ 메서드를 호출하고 object가 가비지 컬렉터에서 관리되는 경우에는 가비지 컬렉터의 오버 헤드를 추가합니다.예시# python 3.4 import sys en = 'a'..
-
WSGI서버 2017. 3. 24. 14:01
웹 서버 게이트웨이 인터페이스(WSGI, Web Server Gateway Interface)는 웹서버와 웹 애플리케이션의 인터페이스를 위한 파이썬 프레임워크입니다.기존의 파이썬 웹 애플리케이션 프레임워크는 웹서버를 선택하는데 있어서 제약이 있었습니다. 보통 CGI, FastCGI, mod_python과 같은 커스텀API 중에 하나만 사용할 수 있도록 디자인 되었는데, WSGI는 그에 반하여 low-level로 만들어져서 웹서버와 웹 애플리케이션,프레임워크간의 벽을 허물었습니다. WSGI는 서버와 게이트웨이 , 애플리케이션과 프레임워크 양단으로 나눠져있습니다. WSGI 리퀘스트를 처리하려면, 서버단에서 환경정보와 콜백함수를 애플리케이션단에 제공해야합니다. 애플리케이션은 그 요청을 처리하고 미리 제공된 콜..
-
[Golang] gin-gonic 헤더 Access-Control-Allow-Origin 여러개 추가 방법언어/Golang 2017. 3. 20. 13:49
CORS 정책상 Access-Control-Allow-Origin은 1개만 등록이 가능합니다. Origin을 *로 할 경우 전 URL에 대해 허용이 가능하지만 아래와 같은 경우면 특정 URL을 지정해야 합니다.c.Header("Access-Control-Allow-Credentials", "true") c.Header("Access-Control-Allow-Origin", "*") // 에러 - Credentials이 true일 경우 특정 URL 1개만 허용 필자가 사용한 방법은 허용할 URL 리스트를 만든 다음, 요청된 URL이 해당 리스트에 맞는지 체크하는 형식으로 문제를 해결했습니다.allowUrlList := []string{"http://foo.com", "http://bar.com", "htt..
-
[Golang] gin-gonic DELETE 메소드 데이터 호출방법언어/Golang 2017. 3. 17. 17:56
간단한 문젠대..GET gin-gonic 웹 프레임워크에서 GET은 .Query()함수로 query parameter로 넘어온 데이터를 받습니다.http://foo.com?id=1234 ... a := c.Query(id)POSTPOST의 경우 body로 넘어온 데이터를 받습니다.http://foo.com # body 부분 {id:1234} ... a := c.PostForm("id")DELETEgin-gonic에서 DELETE 메소드는 무조건 query parameter로 데이터를 넘겨야합니다. body로 데이터를 넘겨줄 경우 이를 인식하지 못합니다.http://foo.com # body 부분 {id:1234} ... a := c.PostForm("id") // nil http://foo.com?id=..
-
[Golang] gin-gonic CORS 문제 해결방법언어/Golang 2017. 3. 17. 16:57
먼저 CORS에 대한 개념이 어느정도 존재한다는 가정하에 진행합니다.TEST 환경자바스크립트 -> Go Gin-gonic API를 요청하는 상황입니다.Request Headersvar req = new XMLHttpRequest(); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.withCredentials = true; req.setRequestHeader("Authorization", "Bearer "+$.cookie("AUTH_A_TOKEN"));Response Headersc.Header("Access-Control-Allow-Headers", "Content-Type, Authorization, Ori..
-
CORS웹 2017. 3. 17. 15:45
개요HTTP 요청은 기본적으로 Cross-Site HTTP Requests가 가능합니다. 다시 말하면, 태그로 다른 도메인의 이미지 파일을 가져오거나, 태그로 다른 도메인의 CSS를 가져오거나, 로 둘러싸여 있는 스크립트에서 생성된 Cross-Site HTTP Requests는 Same Origin Policy를 적용 받기 때문에 Cross-Site HTTP Requests가 불가능합니다. 즉, 프로토콜, 호스트명, 포트가 같아야만 요청이 가능합니다.AJAX가 널리 사용되면서 로 둘러싸여 있는 스크립트에서 생성되는 XMLHttpRequest에 대해서도 Cross-Site HTTP Requests가 가능해야 한다는 요구가 늘어나자 W3C에서 CORS라는 이름의 권고안이 나오게 되었습니다.CORS 요청의 종..