2024.03.08

김무영·2024년 3월 11일

SQLInjection

  1. 테이블명을 검색할 수 있는 DD로 union 수행
  • ' union select tname,'0','0','0','0' from tab --
  1. 테이블의 컬럼명을 검색할 수 있는 DD로 union 수행
  • ' union select column_name,'0','0','0','0' from user_tab_cols where table_name = 'TEST_LOGIN' --
  1. 필요한 레코드를 검색
  • ' union select 필요한 컬럼,,,, from 필요한 테이블 where table_name = ? --

하나의 Transaction 여러개의 쿼리문이 구성되었을 때의 처리

  • 대상쿼리문 insert, update, delete

  • 구성된 모든 쿼리문이 정상적으로 수행되면 commit으로 Transaction이 완료되고, 쿼리문이 비 정상적으로 수행되었다면 rollback으로 Transaction을 취소해야한다.

  • 단일 쿼리문으로 Transaction이 구성되는 경우는 autocommit을 수행하는 것이 편리.

  • Connection은 autoCommit(true)가 기본 설정이므로 query문 하나로 Transaction이 구성된다.

  • 작성법 )

    1. autocommit을 해제
    con.setAutoCommit(true);// true - autocommit, false - autocommit 해제
    1. Connection을 field에 선언 => Connection.close()를 하면 commit이 된다.
    1. 쿼리문을 수행하는 method에서는 반환형을 int로 설정
    public int method(){
    
    쿼리문 1
    int 수행행수
    
    쿼리문 2
    int 수행행수
    
    return 모든수행행수;
    // 쿼리문 1 , 쿼리문 2 : 쿼리문을 실행하기 위한 쿼리문 생성객체를 여러개 얻어 사용.
    }
    1. 호출하는 곳에서 목표로 한 행수인지를 비교하여 commit 또는 rollback을 결정한다.
    int cnt = method();
    try{
    	if( cnt목표로한 행수?){
    		con.commit();
    	}else{
    		con.rollback();
    }catch(SQLException se){
    	con.rollback();
    }
  • con : Connection

    • DB업무처리 method안이 아닌 호출하는 곳에서 Transaction처리와 연결을 끊기 위해
  • transaction() : int

    • 여러 쿼리문을 가지고 있는 method, 실행된 행의 수를 반환
  • useTransaction() : void

    • 실행된 행의 수를 받아서 transaction을 처리하는 일 ( commit, rollback )
    • DBMS와 연결을 끊는 일
  • 여러 개의 insert가 하나의 Transaction으로 구성 될 때에는 commit 또는 Exception으로 처리한다. (catch 안에서 rollback 수행)

  • 여러 개의 update나 delete로 Transaction이 구성될 때에는 if ~else로 commit과 rollback을 처리한다. (catch안에서도 rollback을 수행한다.)

  • 일관성 : Transaction에 포함된 데이터는 모두 기록되든, 모두 기록되지 않든 일관성있게 동작을 해야한다.

    • 쿼리문 수행 후 Connection을 close되면 Java에서는 정상종료라고 보고 commit을 수행한 후 연결을 끊는다.

Web

  • www(World Wide Web) 또는 W3라고 한다.
  • 문자, 이미지, 소리, 영상등을 포함한 문서(Hyper Text)를 사용하기 편한 방법으로
    인터넷에서 전송하고, 검색할 수 있도록 해주는 서비스.
  • internet
    • Hyper Text를 사용하여 인터넷 상에서 정보를 검색해줄 수 있는 프로그램.
    • 컴퓨터를 연결하여 TCP/IP 프로토콜을 사용하여 정보를 주고받는
      컴퓨터 네트워크.
      (1973년 빈튼 서프와 밥 간이 네트워크를 서로 하나의 통신망으로 연결하고자 하는 의도를 가 지고 최초로 명명한 네트워크)
  • URL, HTTP, HTML은 영국의 Tim,Berners,Lee 가 최초 설계하였다.

web에서 사용하는 기본용어

  • Hyper Text : 문서안에서 다른 문서로 연결하는 연결점을 가진 문서.
  • Hyper Link : 문서간의 이동이나 하나의 문서내의 이동을 하기위해 사용하는 링크.
  • Hyper Media : 음성, 영상등 다양한 종류의 미디어를 서로 연결 하는 것.
  • HTML : 웹에서 Hyper Text문서를 작성하고 사용하기위한 표준언어
  • HTTP : 웹 서버와 웹 클라이언트가 통신하기 위해 사용하는 프로토콜.
  • URL : 인터넷에서 존재하는 여러가지 자원들을 표현하기 위한 주소체계.
    • 프로토콜://호스트명/경로/파일명으로 구성

HTML ( Hyper Text Markup Language )

  • tag언어
    • tag : <시작태그명>내용</끝태그명> -> element
    • 언어적인 요소(연산 , 제어)가 배제된 그리기 위한 (Rendering)언어.
      • Rendering : compile 하지않고 , error가 발생하지 않는다.
    • SGML에서 파생된 언어
      • SGML
        • HTML : 사용자에게 보여주기 위한 언어
          • HTML2.0
          • DHTML
          • XHTML
          • HTML5
        • XML : 데이터를 표현하기 위한 언어
          • XHTML

HTML 역사

  • 1995년 HTML2.0 IETF발표
  • 1997년 HTML3.0 발표 (W3C - World Wide Web Consortium에서)
  • 1999년 HTML4.01 발표
  • 2014년 HTML5표준안 발표 (이전 버전의 호환성 중점, 디자인과)

HTML 구조

<!DOCTYPE html>
<html>
  <head>
      <title>타이틀바에 들어갈 내용</title>
    </head>
  	<body>
      사용자에게 
  </body>
</html>

0개의 댓글