Код уязвим для несанкционированного создания произвольных сообщений из-за отсутствия проверки возможностей функции checkPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Код уязвим для несанкционированного создания произвольных сообщений из-за отсутствия проверки возможностей функции check

Сообщение Гость »

Пытаемся улучшить приведенный ниже код, в котором отсутствует проверка возможностей приведенной ниже функции, чтобы устранить уязвимость, при которой люди могут создавать произвольные сообщения и контент, но не знаете, как изменить и дополнить приведенный ниже код, чтобы это сделать. безопасно.
Любые идеи будут оценены по достоинству.
Существующий код ниже:
public static function check_for_saas_push() {

if ( ! isset( $_REQUEST['json_product_push'] ) || ( isset( $_REQUEST['json_product_push'] ) && 'true' !== $_REQUEST['json_product_push'] ) )
return;

error_reporting( E_ERROR );

if ( ! empty( $_POST['product'] ) ) {
$product = stripslashes( $_POST['product'] );
$product = json_decode( $product );

$download_url = Sputnik::API_BASE . '/download/' . $product->post_name . '.zip';
$thumb_url = $product->thumbnail_url;

//Check if local product exists - if so, update it, if not, don't.
$local = get_posts( array(
'pagename' => $product->post_name,
'post_type' => 'wpsc-product',
'post_status' => 'publish',
'numberposts' => 1 )
);

$user_check = get_user_by( 'email', $product->author_email );

if ( $user_check ) {
$product->post_author = $user_check->ID;

if ( ! in_array( 'vendor-administrator', $user_check->roles ) )
$user_check->add_role( 'vendor-administrator' );
}
else {
$product->post_author = wp_insert_user( array( 'role' => 'vendor-administrator', 'user_email' => $product->author_email, 'user_pass' => wp_generate_password(), 'user_login' => $product->author_email ) );
}

$product = (array) $product;
unset( $product['guid'] );
unset( $product['post_date_gmt'] );
unset( $product['post_date'] );

require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');

if ( ! empty( $local ) ) {
$product['ID'] = $local[0]->ID;
$new_id = wp_update_post( $product );
} else {
unset( $product['ID'] );
// Doesn't exist, create it. Then, after created, add download URL and thumbnail.
$new_id = wp_insert_post( $product );
}

update_post_meta( $new_id, '_download_url', $download_url );

foreach ( $product['meta'] as $key => $val ) {
if ( '_wpsc_product_metadata' == $key )
continue;

if ( '_wpsc_currency' == $key )
continue;

update_post_meta( $new_id, $key, $val[0] );
}

$thumb = media_sideload_image( $thumb_url, $new_id, 'Product Thumbnail' );

if ( ! is_wp_error( $thumb ) ) {
$thumbnail_id = get_posts( array( 'post_type' => 'attachment', 'post_parent' => $new_id ) );

if ( ! empty( $thumbnail_id ) ) {

$thumbnail = set_post_thumbnail( $new_id, $thumbnail_id[0]->ID );
echo json_encode( array( 'set_thumbnail' => $thumbnail, 'post_id' => $new_id ) );
die;
}
die;
}
die;
}

exit;
}

Исследование в Интернете и поиск способов изменить ситуацию.
Поможет ли включение приведенного ниже кода (это новое в php и обучении):< /p>
if ( ! current_user_can( 'manage_options' ) ) {
wp_die(); }


Подробнее здесь: https://stackoverflow.com/questions/781 ... ng-capabil
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Разница в результате проверки с использованием jsonschema и check-jsonschema в отношении поля со значением даты и времен
    Anonymous » » в форуме Python
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Как обернуть массив произвольных типов сообщений в неупорядоченный список с помощью PHP для Wordpress? Возникли трудност
    Anonymous » » в форуме Php
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Последние четыре произвольных типа сообщений WordPress
    Anonymous » » в форуме Php
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Xmlrpc уязвим для атаки xxe?
    Anonymous » » в форуме Php
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • GRPC 1.70.1 уязвим для CVE-2024-13176
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»