School
[ Java Programming ] IOStream && FileStream
자바의 입출력 스트림 입력 스트림 : 입력 장치로부터 자바 프로그램으로 데이터를 전달하는 객체 출력 스트림 : 자바 프로그램에서 출력 장치로 데이터를 보내는 객체 입출력 스트림의 기본 단위는 바이트이며, 단방향 스트림이고, 선입선출(FIFO)구조 입니다. 자바 프로그램 개발자는 직접 입력 장치에서 읽지 않고 입력 스트림을 통해 읽으며, 스크린 등 출력 장치에 직접 출력하지 않고 출력 스트림에 출력하면 됩니다. 또한 문자 스트림이란 문자만 입출력하는 스트림으로서 문자가 아닌 바이너리 데이터는 스트림에서 처리하지 못합니다. 문자가 아닌 데이터를 문자 스트림으로 출력하면 깨진 기호가 출력됩니다. JDK의 스트림 계층 구조 스트림 연결 이러한 스트림은 연결될 수 있다는 특징이 있습니다. 파일 입출력 /FileR..
[ Web Hacking ] - Cookie & Session
쿠키 클라이언트의 IP 주소와 User-Agent는 매번 변경될 수 있는 고유하지 않은 정보일 뿐만 아니라, HTTP프로토콜의 COnnectionless와 Stateless특징 때문에 웹 서버는 클라이언트를 기억할 수 없습니다. Connectionless, Stateless Connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미합니다. 특정 요청에 대한 연결은 이후의 요청과 이어지지 않고 새 요청이 있을 때 마다 항상 새로운 연결을 맺습니다. Stateless : 통신이 끝난 후, 상태 정보를 저장하지 않는 것을 의미합니다. 이전 연결에서 사용한 데이터를 다른 연결에서 요구할 수 있습니다. 이러한 HTTP에서 상태를 유지하기 위해 쿠키가 탄생했습니다. 쿠키는 key와..
[ Web Hacking ] - W31c0m3, w3b h4ck3rs!
HTTP 포트로 데이터를 교환하는 방식은 전송 계층(Transport Layer)의 프로토콜을 따릅니다. 대표적으로는 TCP와 UDP가 있습니다. TCP로 데이터를 전송하려는 서비스에 UDP클라이언트가 접근하면, 데이터가 교환되지 않습니다. 반대의 경우도 마찬가지 입니다. 그래서 서비스 포트를 표기할 때는 서비스가 사용하는 전송 계층 프로토콜을 같이 표기하기도 합니다. 예를 들어 HTTP의 서비스 포트가 TCP/80이라고 하면, HTTP서비스를 80번 포트에서 TCP를 제공하고 있다는 뜻입니다. HTTP 요청 HTTP 요청은 서버에게 특정 동작을 요구하는 메시지입니다. 서버는 해당 동작이 실현 가능한지. 클라리언트가 그러한 동작을 요청할 권한이 있는지 등을 검토하고, 적절할 때만 이를 처리합니다. HTT..
[ Security ] 비밀번호 단방향 암호화
단방향 암호화(One-Way Encryption) 단방향 암호화란 한쪽 방향으로 암호화를 한다는 의미입니다. 즉 암호화만 가능하고 복호화는 할 수 없습니다. 그렇기 때문에 비밀번호를 관리할 때 유용하게 사용됩니다. 비밀번호 단방향 암호화 방식으로 저장하는 경우에는 패스워드 DB가 유출되어도 안전합니다. 패스워드를 검증할 때에는 사용자로부터 입력받은 비밀번호를 똑같은 방식으로 암호화하여 암호화된 패스워드끼리 비교를 하면됩니다. 유저가 비밀번호를 잊어버렸을 때는 찾기가 불가능합니다. 대신 비밀번호 변경 메일, SMS인증을 통해 새로운 비밀번호를 입력하도록 하면 됩니다. 대표적으로 많이 사용하고 있는 알고리즘은 SHA-256암호화 알고리즘입니다. 단방향 암호화 종류 해시(Hash) 알고리즘을 사용한다. MD5..