Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

우주코딩

sql , sql 삽입공격, 값이 놓일 자리 ? 본문

Project

sql , sql 삽입공격, 값이 놓일 자리 ?

우주코딩 2021. 10. 20. 18:20

sql 삽입 공격

데이터가 들어갈 자리에 sql 코드를 집어넣어서 원래 sql문장을 왜곡시키는 것을 sql 삽입 공격이라고 한다.

값이 놓일 자리 ?

in-parameter라고 부른다. sql 삽입 공격이 불가능하다.
PreparedStatement는 미리 SQL 문장을 준비하여 값을 삽입하는 기법이다.

SQL 문장을 준비할 때, 값이 들어 갈 자리에 ? 로 표시한다.
? 를 "in-parameter"라 부른다.
SQL을 서버에 전달하기 전에 in-parameter 자리에 값을 넣는다. => PreparedStatement.setXxx(in-parameter 인덱스, 값);

  • setXxx : 컬럼의 타입에 따라 setInt(), setString(), setDate() 등을 사용할 수 있다.
  • in-parameter 인덱스
  • ? 문자가 등장하는 순서대로 1부터 번호를 부여한다.

  • SQL 문장에 삽입될 값이다.
  • 실제 SQL 문장과 별도로 서버에 전달되기 때문에 문자열 값 중간에 '(작은 따옴표)가 포함되더라도 SQL 문에 영향을 끼치지 않는다. 작은 따옴표를 그냥 일반 문자로 취급한다. 즉, 'SQL 삽입 공격'이 100% 불가능하다.
    => in-parameter 값을 설정할 때 순서대로 할 필요는 없다.
Comments