>  기사  >  데이터 베이스  >  사전 컴파일이 SQL 삽입을 방지할 수 있는 이유

사전 컴파일이 SQL 삽입을 방지할 수 있는 이유

清浅
清浅원래의
2019-05-11 14:55:575987검색

사전 컴파일이 SQL 주입을 방지할 수 있는 이유: 사전 컴파일 후 SQL 문은 데이터베이스에 의해 분석, 컴파일 및 최적화되었으며 데이터베이스는 매개변수화된 형식으로 쿼리가 허용되므로 민감한 문자가 있더라도 데이터베이스는 이를 처리합니다. SQL 명령어 대신 처리합니다

사전 컴파일이 SQL 삽입을 방지할 수 있는 이유

우리 모두 알고 있듯이 Java의 JDBC에는 전처리 기능이 있습니다. 이 기능의 주요 장점 중 하나는 특히 작업 시 실행 속도를 향상시킬 수 있다는 것입니다. 또 다른 장점은 예방입니다. 엄밀히 말하면 SQL 주입은 대부분의 SQL 주입을 방지해야 합니다.

사용법은 아래와 같습니다.

String sql="update cz_zj_directpayment dp"+
 "set dp.projectid = ? where dp.payid= ?";
try {
PreparedStatement pset_f = conn.prepareStatement(sql);
pset_f.setString(1,inds[j]);
pset_f.setString(2,id);
pset_f.executeUpdate(sql_update);
}catch(Exception e){
//e.printStackTrace();
logger.error(e.message());
}

그렇다면 왜 이렇게 처리하면 SQL 주입을 방지하고 보안을 강화할 수 있을까요? 실제로 이는 프로그램이 실행되기 전에 SQL 문이 미리 컴파일되어 있기 때문입니다. 프로그램이 실행될 때 처음으로 데이터베이스가 작동되기 전에 SQL 문은 데이터베이스에 의해 분석, 컴파일 및 최적화되었습니다. 해당 실행 계획도 캐시되어 데이터베이스가 표준화된 형식으로 쿼리를 사용할 수 있습니다. 매개변수에 '1=1'과 같은 민감한 문자가 있더라도 매개변수가 런타임 시 PreprareStatement에 동적으로 전달됩니다. 데이터베이스는 이를 SQL 대신 매개변수 및 필드 속성 값으로 처리합니다. 이러한 방식으로 명령은 SQL 삽입 역할을 합니다.

위 내용은 사전 컴파일이 SQL 삽입을 방지할 수 있는 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.