27회 선택하기
실무형 선택하기
17. 다음 자바 프로그램은 SQL Injection 에 취약한 소스와 취약점을 해소한 소스코드 이다. ( )에 들어갈 코드를 작성하시오.
[취약한 소스코드]
1: // 외부로부터 입력받은 값을 검증 없이 사용할 경우 안전하지 않다.
2: String gubun = request.getParameter("gubun");
3: ......
4: String sql = "SELECT * FROM board WHERE b_gubun = '" + gubun + "'";
5: Connection con = db.getConnection();
6: Statement stmt = con.createStatement();
7: // 외부로부터 입력받은 값이 검증 또는 처리 없이 쿼리로 수행되어 안전하지 않다.
8: ResultSet rs = stmt.executeQuery(sql);
​
[취약점을 해소한 소스코드]
1: String gubun = request.getParameter("gubun");
2: ......
3: // 1. 사용자에 의해 외부로부터 입력받은 값은 안전하지 않을 수 있으므로, PreparedStatement 
사용을 위해 ?문자로 바인딩 변수를 사용한다.
4: String sql = "SELECT * FROM board WHERE b_gubun = ( A )";
5: Connection con = db.getConnection();
6: // 2. PreparedStatement 사용한다.
7: PreparedStatement pstmt = con.( B )(sql);
 8: //3.PreparedStatement 객체를 상수 스트링으로 생성하고, 파라미터 부분을 setString등의 메소드로 
설정하여 안전하다.
 9: pstmt.( C )(1, gubun);
 10: ResultSet rs = pstmt.( D );

클릭하면 정답이 보입니다.
정답 확인 맞췄어요 O 틀렸어요 X
(A) ?
(B) prepareStatement
(C) setString
(D) executeQuery()
위키 해설 위키해설을 등록해주세요!
📝 문제 해설(등록자)
클릭하면 보입니다.
🤖 AI 문제 해설
AI의 해설은 정확하지 않을 수 있으니 읽어보시고 꼭 평가해주세요. 시기에 따라 사용 가능한 모델이 달라질 수 있습니다. 🤝 무료 LLM 모델을 찾고 있습니다.
클릭하면 보입니다.
AI 답변을 생성 중입니다.
Loading...

최대 1분까지 걸릴 수 있습니다.

🗣️ 관련 포럼글
자유 댓글

모든 문제들의 저작권은 원저작권자에게 있습니다. 본 사이트는 웹상에 공개되어 있는 문제만 모아서 보여드립니다.
저작권 안내   데이터 보호 안내   제휴 문의

copyright 2026 뉴비티::새로운 CBT 시스템 - newbt.kr (Listed on LeanVibe)