"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PHP에서 문자열을 이스케이프하기 위해 언제 `addslashes` 대신 `mysql_real_escape_string`을 선택해야 합니까?

PHP에서 문자열을 이스케이프하기 위해 언제 `addslashes` 대신 `mysql_real_escape_string`을 선택해야 합니까?

2024년 11월 22일에 게시됨
검색:913

When should you choose `mysql_real_escape_string` over `addslashes` for escaping strings in PHP?

mysql_real_escape_string 대 addlashes: 차이점 이해

PHP에서는 mysql_real_escape_string 및 addlashes 함수를 사용하여 데이터베이스 쿼리용 문자열을 삭제하는 경우가 많습니다. 몇 가지 유사점이 있지만 데이터의 보안과 무결성에 영향을 미칠 수 있는 주요 차이점이 있습니다.

addslashes

addslashes는 다음과 같은 특정 문자를 이스케이프합니다. SQL 쿼리에 문제가 있습니다. 여기에는 작은따옴표('), 큰따옴표("), 백슬래시() 및 NUL(널 바이트) 문자가 포함됩니다. 이러한 문자 앞에 백슬래시를 추가하면 추가 래시가 해당 문자가 특수 문자로 해석되는 것을 방지하여 SQL의 위험을 최소화합니다. 주입 vulnerability.

mysql_real_escape_string

mysql_real_escape_string은 MySQL과 함께 사용하도록 특별히 설계된 보다 특수한 함수로, 확장된 집합 앞에 백슬래시를 추가하는 MySQL 라이브러리 함수 mysql_real_escape_string을 호출합니다. 추가 래시로 이스케이프된 문자를 포함하되 이에 국한되지 않는 문자입니다. \x00(0바이트), \n(줄 바꿈), \r(캐리지 리턴) 및 \x1a(파일 끝).

주요 차이점

addlashes와 mysql_real_escape_string의 주요 차이점은 이스케이프되는 문자 집합입니다. mysql_real_escape_string은 특정 제어를 포함하여 더 넓은 범위의 문자를 이스케이프합니다. 문자와 줄 끝 문자는 속눈썹을 추가하지 않습니다.

또한 mysql_real_escape_string은 문자열을 이스케이프할 때 MySQL의 특정 요구 사항을 인식합니다. 따라서 사용 중인 MySQL 버전에 따라 다른 이스케이프 규칙을 구현할 수 있습니다. 예를 들어, 최신 버전의 MySQL에서는 일반적으로 작은따옴표를 이스케이프하기 위해 큰따옴표를 사용하는 반면, 이전 버전에서는 백슬래시를 사용합니다. mysql_real_escape_string은 적절하게 조정되어 사용 중인 특정 MySQL 버전에 대해 문자열이 적절하게 이스케이프되도록 보장합니다.

mysql_real_escape_string에 의해 이스케이프된 추가 문자의 중요성

mysql_real_escape_string에 의해 이스케이프된 문자 그러나 추가 래시는 \x00 및 \x1a와 같은 제어 문자를 포함하지 않습니다. 이러한 문자는 데이터 손상 또는 데이터베이스 연결 종료 등 데이터베이스 내에서 의도하지 않은 결과를 초래할 수 있습니다.

또한 여러 항목을 저장할 때 줄 끝 문자(\n 및 \r)를 이스케이프하는 것이 중요할 수 있습니다. -라인 데이터. 제대로 이스케이프 처리하지 않으면 이러한 문자로 인해 데이터에 줄 바꿈이나 캐리지 리턴이 도입되어 가독성과 유용성이 저하될 수 있습니다.

결론

추가 래시가 기본 이스케이프를 제공하는 반면 SQL 쿼리에서 일반적으로 문제가 되는 문자가 있는 경우 mysql_real_escape_string은 MySQL 데이터베이스용 이스케이프 문자열을 위한 보다 포괄적이고 안정적인 선택입니다. MySQL의 특정 요구 사항을 고려하고 잠재적으로 방해가 되는 다양한 문자 집합을 방지함으로써 mysql_real_escape_string은 데이터의 보안과 무결성을 강화합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3