사전 컴파일이 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!