sanitize vimeo embed code?

У меня есть мета-поле с текстовым полем, в котором пользователи могут вставлять код встраивания vimeo.

Должен ли я дезинфицировать этот код до того, как я обновить_post_meta, и если да, то как мне это сделать? Я не хочу выделять важную информацию (например, iframe) … Я просто хочу убедиться, что во что-то вредоносное не вводится.

Solutions Collecting From Web of "sanitize vimeo embed code?"

Вам нужно добавить настраиваемый обратный вызов проверки / санитизации и подключить его к publish_post (и / или draft_post и / или future_post , если применимо). Например:

 <?php function wpse_44807_update_custom_post_meta() { // Globalize the $post object global $post; // If our custom post meta key is set, sanitize it; // otherwise, return false $my_post_custom = ( isset( $_POST['_my_post_custom'] ? wp_filter_nohtml_kses( $_POST['_my_post_custom'] ? false ); // Now, delete or update our custom post meta key if ( false == $my_post_custom ) { delete_post_meta( $post->ID, '_my_post_custom' ); } else { update_post_meta( $post->ID, '_my_post_custom', $my_post_custom ); } } add_action( 'publish_post', 'wpse_44807_update_custom_post_meta' ); add_action( 'draft_post', 'wpse_44807_update_custom_post_meta' ); ?> 

Обратите внимание, что я дезинфицирую, используя фильтр wp_filter_nohtml_kses() , который был бы уместным, если вы ожидаете, скажем, идентификатор видео или что-то подобное альфа-числовое. Ваш выбор санитарии изменится в зависимости от типа ожидаемого ввода.

Кроме того: я использую метасимвол с меткой подчеркивания с префиксом, который подходит, если вы определяете мета-поле персонализированного сообщения для своего настраиваемого мета-ключа. (Префикс подчеркивания скрывает этот мета-ключ из раскрывающегося списка метаданных «настраиваемое поле».)

update_post_meta() будет дезинфицировать его для вставки базы данных для вас. То, что вам действительно нужно наблюдать, – это вредоносный HTML-код, который повлияет на вывод. Для этого вам понадобится регулярное выражение или некоторые другие средства сравнения с известным / желаемым форматом. Чтобы справиться с этим, я бы рекомендовал только принять идентификатор видео или что-то в этом роде, где вы можете строго контролировать, как выполняется вывод, а не позволять пользователю предоставлять вам iframe и т. Д.