prosource

$wpdb->와 같은 문을 사용하여 와일드카드 문자가 있는 해시를 표시할 수 있습니다.

probook 2023. 9. 25. 22:50
반응형

$wpdb->와 같은 문을 사용하여 와일드카드 문자가 있는 해시를 표시할 수 있습니다.

와일드카드로 준비된 문장을 작성하려고 하는데 와일드카드의 해시로 보이는 비율 와일드카드 문자가 반환되는 것처럼 보이는 문제에 부딪혔고 그 이유를 잘 모르겠습니다.문제의 코드는 다음과 같습니다.

$condition = $wpdb->prefix."posts.post_title LIKE %%%s%%";
$query['conditions'][] = $wpdb->prepare($condition, $name);

결과는 다음과 같습니다.

posts.post_title LIKE {d690dd63f5944b9bca120e110c22802f0ec841d8120d813dd4abc08cba4a59c0}BT{d690dd63f5944b9bca120e110c22802f0ec841d8120d813dd4abc08cba4a59c0}

누군가 이것의 원인에 대해 아는 사람이 있는지 궁금했습니다.어떤 도움이라도 주시면 대단히 감사하겠습니다.

감사해요.

해시에 대해서는 걱정하지 마십시오. 쿼리를 실행하면 $wpdb에서 %로 대체됩니다.

이러한 해시는 SQL 주입 공격에 대한 해결책으로 WP v4.8.3과 함께 도입되었습니다.

% 캐릭터의 자리 표시자입니다.%s, %d 및 %f 이외의 다른 사용을 방지합니다.승인된 용도 이외의 %가 있으면 %를 해시로 대체합니다.$wpdb가 쿼리를 실행하면 해당 해시가 %로 다시 바뀝니다.

해시를 직접 제거하려면remove_placeholder_escape(), 다음과 같습니다.

$query['conditions'][] = $wpdb->remove_placeholder_escape($wpdb->prepare($condition, $name));

언급URL : https://stackoverflow.com/questions/53831586/using-like-statement-with-wpdb-prepare-showing-hashes-where-wildcard-character

반응형