такое fwrite - проблема безопасности в functions.php? - PullRequest
1 голос
/ 02 мая 2019

Мне нужно записать stripe_customer_id в метаданные пользователя базы данных wordpress, чтобы у меня была форма интерфейса, которую пользователь может использовать для отмены подписки в Stripe.Пользователь создаст учетную запись и подпишется на подписку в той же форме.

Я пытался выполнить это с помощью действия и фильтра, но не смог успешно сделать это, потому что пользователь не вошел в систему, когдаподписка Stripe создана.

Я нашел другого разработчика, который помог мне, и они достигли конечной цели, записав stripe_customer_id в текстовый файл, войдя в систему пользователя, а затем добавили идентификатор в метаданные пользователя..

Может кто-нибудь сказать мне, если следующие действия в файле functions.php представляют какую-либо угрозу безопасности?

add_action('gform_stripe_customer_after_create', 'save_stripe_customer_id',10,4);

function save_stripe_customer_id( $customer, $feed, $entry, $form)
{
    $fp = fopen("stripdata.txt","w");      
    fwrite($fp,$customer->id);      
    fclose($fp);
}

add_action("gform_user_registered", "autologin", 10, 4);
function autologin($user_id, $config, $entry, $password) {
    wp_set_auth_cookie($user_id, false, '');
    $fp = fopen("stripdata.txt","r");
    $customer_id = trim(fgets($fp));
    fclose($fp);

    update_user_meta($user_id, '_stripe_customer_id',$customer_id);       
}

Спасибо за отзыв @EdCottrell.Разработчик переписал код, используя переменную сеанса.Не могли бы вы посмотреть на этот код очень быстро и сообщить мне ваши мысли?

// login user after they register
add_action("gform_user_registered", "autologin", 10, 4);
function autologin($user_id, $config, $entry, $password){
        wp_set_auth_cookie($user_id, false, '');       
        update_user_meta($user_id, '_stripe_customer_id',$_SESSION['customer_id']);
        unset($_SESSION['customer_id']);       
}

add_action('gform_stripe_customer_after_create', 'save_stripe_customer_id',10,4);

function save_stripe_customer_id( $customer, $feed, $entry, $form)
{  

   // $email = rgar( $entry,'14');

    if(!session_id())
    {    
        session_start();
    }

     $_SESSION['customer_id'] = $customer->id;  

}
...