Обход пароля защищенной страницы или записи WordPress через URL

23 янв. 2017 г., 16:37:17
Просмотры: 15K
Голосов: 0

У меня есть защищенная паролем страница, к которой я хочу предоставить доступ через специальную ссылку с паролем в GET-параметре URL www.domaine.tld/my-page?code=mycustompassword

Я нашел это решение, но оно не работает Обход защиты паролем записей через GET-переменную

Пожалуйста, помогите мне обойти форму ввода пароля

Спасибо

0
Все ответы на вопрос 3
0
    add_filter( 'post_password_required', function( $returned, $post )
{
   
    if( $returned && ( $_GET['pwd'] ==  $post->post_password ) )
        $returned = false;
    return $returned;

}, 10, 2 );

**Обходная ссылка для страницы, защищенной паролем. Необходимо добавить в файл функций темы. Ссылка должна выглядеть так: https://www.example.com/post/?pwd=ПАРОЛЬ

10 мая 2023 г. 21:53:09
5

Вы можете использовать тот же принцип, что и в рабочем примере, однако замените $_GET на $_POST. В итоге у вас получится что-то вроде этого в конце кода:

// Ваша пользовательская проверка содержимого '$_POST'
// …также проверяем, есть ли вообще пароль
// …и если пользователь уже посещал страницу, не устанавливаем Cookie снова
if (
        isset( $_POST['circumvent'] ) 
        and 'disable-pass' === $_POST['circumvent'] 
        and isset( $post->post_password )
        and ! isset( 'wp-postpass_'.COOKIEHASH )
    ) {
    // В итоге мы используем пароль в открытом виде, чтобы установить Cookie
    // как если бы пользователь ввел его в форму пароля
    setcookie(
        'wp-postpass_'.COOKIEHASH,
        $hasher->HashPassword( wp_unslash( esc_attr( $post->post_password ) ) ),
        $expire,
        COOKIEPATH
    );
}
// Теперь выводим содержимое:
the_content();
23 янв. 2017 г. 16:45:20
Комментарии

Привет, спасибо за ответ. Я получаю такую ошибку: PHP Fatal error: Call to a member function HashPassword() on a non-object in /home/test-user/public_html/wp-content/themes/default/template-landing-private.php on line 81

JCF JCF
23 янв. 2017 г. 16:51:29

Возможно, вам нужно добавить global $hasher; в начале файла. Иначе, можете опубликовать весь файл целиком?

fergbrain fergbrain
23 янв. 2017 г. 16:56:52

/ Название шаблона: TEST /

if ( isset( $GET['code'] ) and 'mycustompassword' === $_GET['code'] and isset( $post->post_password ) and null !== 'wp-postpass'.COOKIEHASH //!isset( 'wp-postpass_'.COOKIEHASH ) ) { setcookie( 'wp-postpass_'.COOKIEHASH, $hasher->HashPassword( wp_unslash( esc_attr( $post->post_password ) ) ), $expire, COOKIEPATH ); }

get_header(); while ( have_posts() ) : the_post(); the_content(); endwhile; get_footer();

JCF JCF
23 янв. 2017 г. 17:10:29

Пожалуйста, размещайте ваш код между обратными кавычками (`), чтобы он был правильно отформатирован.

fergbrain fergbrain
23 янв. 2017 г. 17:17:12

Привет, извините, я разместил ответ ниже с полным кодом. Спасибо!

JCF JCF
23 янв. 2017 г. 17:23:12
0

вместо использования the_content(), используйте echo apply_filters( 'the_content', $post->post_content ); возможно, я ошибаюсь, но считаю, что это позволит обойти форму с паролем полностью, после чего вы сможете реализовать собственную простую логику для отображения контента или его скрытия. Однако в любом случае настоятельно не рекомендую так делать, если контент содержит очень важные данные. например, надеюсь, это не персональная информация пользователей. дополнительно вам нужно убедиться, что у записи установлен пароль, чтобы она не отображалась в результатах поиска, картах сайта, лентах или конечных точках wp json api.

11 февр. 2018 г. 06:26:07