Есть ли проблемы с безопасностью?
В том маловероятном случае, если ваш $post
объект будет заменен чем-то другим (и в этот момент я считаю, что безопасность сайта уже скомпрометирована), злоумышленник может заменить значение, возвращаемое $post->ID
, вредоносным запросом. строка (она же SQL-инъекция ).
Чтобы избежать этого, как уже отмечали все остальные, вы должны экранировать свой запрос, используя метод prepare () из объекта $wpdb
:
$mycontent = $wpdb->get_var(
$wpdb->prepare(
"SELECT `meta_value` FROM `wp_postmeta` WHERE `post_id` = %d AND `meta_key` = %s;",
array( $post->ID, 'my_seo_title' )
)
);
Из любопытства, почему вы вручную извлекаете мета-значение из базы данных, когда у нас уже есть функция get_post_meta () (которая выполняет всю проверку безопасности автоматически для вас)? Я имею в виду, вы могли бы заменить свой код на:
$mycontent = get_post_meta( $post->ID, 'my_seo_title', true );
... и забудьте о написании запросов вручную и / или обеспечении их безопасности (когда в этом нет необходимости).