2012-01-13 3 views
2

Google 검색어를 사용해 보았지만 {특수 문자로 해석되었거나 무시 되었기 때문에} 표시되지 않았습니다. {}는 MySQL 쿼리에서 무엇을합니까?

내가이 보이는 곳의 예에서 만든 쿼리 보았다

SELECT `id` FROM areas WHERE `name` = '{$listing['cityname']}' 

을 그리고 이것은 PHP에 있었다 (그래서 내부 mysql_query())

내 추측은 (는 소문자로 검색 동일 LOWER( 이름 : ) AS...) 100 % 확실한 방법으로 작업하고 싶습니다.

+0

"주입 공격"과 관련이 있습니다. 매개 변수, 제발! (또한 코드의 * 전체 * 최소 컨텍스트를 포함하십시오. 질문과 대답이 향후 사람들에게 더 유용 할 것입니다.) –

답변

10

MySQL 구문이 아닌 PHP 구문입니다. complex expressions을 큰 따옴표로 묶은 문자열로 삽입 할 수 있습니다. 따라서 귀하의 예에서는 배열 인덱스 $listing['cityname']이 평가되고 해당 값이 쿼리에 사용됩니다.

SQL과는 아무런 관련이 없습니다.

그런데 배열 값이 아직 mysql_real_escape_string() 같은 것으로 이스케이프 처리되지 않은 것으로 가정 할 때 SQL 삽입 취약점이 너무 심합니다. 요즘 대부분의 사람들은 prepared statements을 사용하여 SQL 쿼리를 작성합니다.

+0

이러한 보간의 예가 무엇입니까? 간단한 예를 들어 주시겠습니까? 감사. –

+4

@Shamim Hafiz : 이미 질문에 예가 있습니다. – BoltClock

+0

그래도 이것은 내 cron 작업 내에서 순수하게 내부 프로세스이므로 보안은이 경우 문제가되지 않습니다. 사용자 입력이있는 다른 모든 섹션에는 mysql_real_escape_string() 함수가 있습니다. – jeffkee