>php教程 >PHP开发 >mybatis에서 #과 $의 차이점에 대한 간단한 토론

mybatis에서 #과 $의 차이점에 대한 간단한 토론

高洛峰
高洛峰원래의
2017-01-05 17:22:561420검색

1. #들어오는 데이터를 문자열로 처리하고 자동으로 들어오는 데이터에 큰따옴표를 추가합니다. 예를 들어 order by #user_id#, 전달된 값이 111이면 sql로 구문 분석할 때 값은 전달된 값이 id인 경우 order by "id"입니다. 🎜>

2. $ 들어오는 데이터를 직접 표시하고 SQL에서 생성합니다. 예: order by $user_id$, 전달된 값이 111이면 sql로 구문 분석할 때 값은 user_id별로 정렬됩니다. 전달된 값이 id이면 구문 분석된 sql은 id별로 정렬됩니다.  

3.#Method를 사용하면 SQL 주입을 크게 방지할 수 있습니다. ​

4. $ 메소드는 SQL 주입을 방지할 수 없습니다.

5. $ 메서드는 일반적으로 테이블 이름과 같은 데이터베이스 개체를 전달하는 데 사용됩니다. ​

6. 일반적으로 #을 사용할 수 있으면 $를 사용하지 마세요.

MyBatis 정렬 동적 매개변수별 정렬을 사용할 때 #

문자열 대체

대신 $를 사용하는 데 주의해야 합니다. 기본적으로 #{} 형식 구문을 사용하면 MyBatis는 준비된 명령문 속성을 생성하고 이에 대해 안전한 값(예: ?)을 설정합니다. 이는 안전하고 빠르며 선호됩니다. 때로는 변경되지 않은 문자열을 SQL 문에 직접 삽입하고 싶을 때도 있습니다. 예를 들어 ORDER BY처럼 다음과 같이 사용할 수 있습니다: ORDER BY ${columnName}

여기서 MyBatis는 문자열을 수정하거나 이스케이프하지 않습니다.

중요: 사용자의 출력을 수락하고 이를 명령문에 변경할 수 없는 문자열로 제공하는 것은 안전하지 않습니다. 이는 잠재적인 SQL 주입 공격으로 이어지므로 사용자가 이러한 필드를 입력하도록 허용하거나 일반적으로 이스케이프하여 직접 확인해서는 안 됩니다.

위는 mybatis에서 #과 $의 차이점에 대한 편집자의 간략한 토론 내용입니다. 모두가 PHP 중국어 웹사이트를 지지해 주시길 바랍니다~

차이점에 대한 더 간단한 토론입니다. mybatis의 # 및 $ #과 $의 차이점에 대한 관련 기사는 PHP 중국어 웹사이트를 참고하세요!


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