버퍼 오버플로우 공격(Buffer Overflow Attack)이란?
버퍼 오버플로우 공격(Buffer Overflow Attack) 이란? 간단히 말해서 프로그램에 버퍼를 조작할 수 있는 버그가 존재할 경우 컴퓨터에게 해커가 원하는 일을 하도록 지시시켜 공격하는 것이다. 버퍼 오버플로우가 발생하는 C코드 1234567#include int main(int argc, char* argv[]){char buffer[200];strcpy(argv[0], buffer);printf("Hello %s",buffer);} 이 코드는 버퍼 오버플로우 취약성이 있는 코드다. 코드를 컴파일하고 실행시켰을 때 첫 번째 인자에 200자 이상의 문자를 입력하면 버퍼 오버플로우가 발생하게 된다. 이 경우 악의적인 공격자가 컴퓨터의 루트 권한을 뺏어 올 수 있게 되어 자유자재로 컴퓨터에게 악영향..
2015.11.02
no image
[C] 비주얼스튜디오2013 scanf 오류 해결법
평소와 다를 것 없이 비주얼 스튜디오 2013에서 scanf 를 쓰려고 하면 Error1error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.c:\users\kgu\documents\visual studio 2013\projects\project3\project3\statistic.cpp101Project3 라는 오류가 나면서 컴파일이 되지 않는다. 그렇기 때문에 비주얼 스튜디오 2013 버전에서는 그동안 써왔던 scanf를 scanf_s로 바꿔주..
2015.11.02
[WebService] getParameter와 getAttribute의 차이
- GET / POST 방식으로 파라미터 값을 넘기고, 그 값을 사용할때 쓰는 메소드가 getParameter이며, 리퀘스트 영역에 있는 메소드입니다. - getParameter는 String타입으로 반환합니다. - getAttribute는 page, request, response, session, application과 같은 스코프 영역에 임의의 속성값(Attribute)을 저장하고 가져올 때 사용하는 것입니다. - 거의 모든영역에서 공통적으로 사용하는 메소드로 해쉬맵방식으로 key값 value값을 settAttribute메소드를 이용해서 저장하고 getAttribute메소드를 이용해서 반환받습니다. - getAttribute는 Object타입을 반환합니다. 출처 : http://blog.naver...
2015.10.18
[WebService] 속성(Attribute)
각 객체의 Lifecycle 객체 생성 소멸 ServletContext 웹 application 시작 시 웹 application 종료 시 HttpSession 세션을 사용하는 content 최초 접속 시 타임아웃 invalidate() 호출 시 HttpServletRequest 해당 servlet 요청 시 요청 완료 시 속성(Attribute) - 특정 정보와 행위를 가지고 있는 객체- ServletContext, HttpServletRequest, HttpSession 객체에 binding- Java Object 형태의 객체 (모든 java 클래스는 Object 형태로 변환 가능)- 내부적으로 (name, value) 형식으로 저장- 속성을 binding한 객체의 scope 내에서 정보 공유에 사용e..
2015.10.18
[WebService] HttpSession, 쿠키, 세션
HttpSession 객체 - HTTP 프로토콜은 비연결형(stateless) 프로토콜- 연결 -> 요청 -> 응답 -> 종료- 연속적인 사용자 정보가 보관되지 않음ex ) 로그인 상태, 장바구니 해결방안- 별도의 수단을 통해 각각의 클라이언트를 구분- 클라이언트 별로 해당 정보를 유지- 어떻게 클라이언트를 구분할 것인가 ? -> 쿠키와 세션으로 해결 가능 쿠키 vs 세션 쿠키 :- 브라우저를 통해 클라이언트에 저장되는 사용자 정보- (name, value) 쌍으로 이루어진 정보- 초기에 웹 서버에 의해 HTTP Header에 포함되어 클라이언트에게 전송- 이후에 접속마다 클라이언트가 웹 서버에게 재전송- 보안적 취약성으로 인해 중요 정보를 저장하지 않아야 함 세션 :- 사용자 정보를 서버에 저장- 클라..
2015.10.18
[WebService] HttpServletRequest, HttpServletRespose
HttpServletRequest - 사용자의 요청 정보와 쿠키, 세션 등의 정보를 제공하는 interface- Container가 이 interface를 구현한 객체를 servlet에게 제공 - Methods 1. getParameter() : 클라이언트가 입력한 파라미터의 값을 제공ex ) String colorParam = request.getParameter("color"); 2. getParameterValues() : Checkbox나 select 등으로 하나의 이름으로 여러 값을 보낸 경우 사용 ex ) String[] sizes = request.getParameterValues("sizes"); 3. getParameterNames() : 요청시 입력된 Name 값의 Enumveratio..
2015.10.18
no image
[WebService] Servlet Lifecycle
Servlet- Client에 의해 요청된 request를 동적으로 처리하고 이에 대한 response를 생성해 내는 java object- Java 플랫폼에서 동적인 contents를 생성하기 위해 사용- 주로 HTML문서를 생성해서 client에게 돌려줌 Servlet container (=Web container)- Servlet을 관리하고 실행하는 component- 자체적으로 JVM과 JRE를 포함- 웹서버의 URL요청을 받아 매핑되는 servlet을 실행- Servlet의 전반적인 lifecylcle을 관리- Apache Tomcat, BEA WebLogic...- JSP도 내부적으로 servlet으로 변환되어 실행 Container와 Servlet 동작방식1. Cilent의 URL 요청2. ..
2015.10.18
[WebService] Container와 Servlet 동작 방식
Servlet의 동작원리 1. Client의 URL 요청 클라이언트가 URL요청을 하면 웹서버는 .xml 파일을 통해서 Servlet 요청을 알아챈다. 이 때 .xml 파일은 웹서버 측에서 URL과 Servlet 클래스를 미리 Mapping 시켜 놓은 Depolyment Descriptor(배포서술자)이다. 2. Request, Response 객체 생성 Web Container는 받은 요청을 처리하기 위해 HTTP 요청(Request)을 처리하기 위한 Request 객체와 HTTP 응답(Response)을 위한 Response 객체를 생성한다. 3. Servlet 인스턴스와 Thread 생성 Request, Response 객체가 생성된 뒤 사용자의 URL 요청이 어떤 서블릿을 필요로 하는지 xml 파..
2015.10.18
[WebService] GET방식과 POST방식의 차이
먼저 간단히 정리하자면GET과 POST은 HTTP Protocol을 이용하여 서버에 무언가를 전달할 때 사용하는 방식이라고 할 수 있다. 즉 GET은 가져오는 것이고, POST는 수행하는 것에 초점을 맞추면 된다. GET은 서버에서 어떤 데이터를 가져와서 보여준다던가 하는 용도이며, 서버의 값이나 상태를 바꾸지 않는다.이와 달리 POST는 서버의 값이나 상태를 바꾸기 위해서 사용한다. * GET 방식- 클라이언트로부터 데이터를 이름과 값이 결합된 스트링 형태로 전달- 태그의 "METHOD" 속성의 값으로 "GET"을 입력ex ) ...- 전송 데이터 양은 225자- 요청을 위한 정보를 전송 할 때 사용- 데이터가 주소 입력란에 표시되므로 최소한의 보안도 유지되지 않음 * POST 방식- 클라이언트와 서버..
2015.10.17