wp_remote_get和写入文件系统的安全性如何?

时间:2017-09-14 18:39:13

标签: php wordpress woocommerce

我正在创建一个插件,它对一个簿记服务进行API调用,我正在将它与WooCommerce集成。

创建订单后,我使用woocommerce_email_order_details挂钩使用$response = wp_remote_post( $post_url );执行我的API调用,其中$post_url已修改,以便它可以与API一起使用。

在此响应中也是一个pdf,我使用uploads API保存到WP_Filesystem()文件夹中的文件夹。这部分看起来像这样:

$response = wp_remote_post( $post_url );

if ( is_wp_error( $response ) ) {
    $error_code = wp_remote_retrieve_response_code( $response );
    $error_message = wp_remote_retrieve_response_message( $response );
    return new WP_Error( $error_code, $error_message );
}

$body = json_decode( $response['body'] );

$pdf_link = esc_url( $body->order->pdf );
$pdf_name = esc_html( $body->order->order_number );

$pdf_get = wp_remote_get( $pdf_link );

if ( is_wp_error( $pdf_get ) ) {
    $error_code = wp_remote_retrieve_response_code( $pdf_get );
    $error_message = wp_remote_retrieve_response_message( $pdf_get );
    return new WP_Error( $error_code, $error_message );
}

$pdf_contents = $pdf_get['body'];

$pdf_name = 'order-' . $pdf_name . '.pdf';

$upload_dir = wp_upload_dir();

$new_dir = $upload_dir['basedir'] . '/orders/' . date( 'Y' ) . '/' . date( 'm' );

if ( ! file_exists( $new_dir ) ) {
    wp_mkdir_p( $new_dir );
}

global $wp_filesystem;
if ( empty( $wp_filesystem ) ) {
    require_once( ABSPATH . '/wp-admin/includes/file.php' );
    WP_Filesystem();
}

$wp_filesystem->put_contents(
    $new_dir . '/' . $pdf_name,
    $pdf_contents,
    FS_CHMOD_FILE // predefined mode settings for WP files.
);

我已经在本地服务器上使用实时链接对此进行了测试,但一切正常。

我认为我能做的一件事是在保存之前逃避pdf的内容,因为这样会破坏它。即使这是簿记服务的API发送给我的东西,我也不想做任何事情并将其视为理所当然。

我最感兴趣的是:这样安全吗?这里是否有任何可能的攻击媒介,因为我不想让我的客户面临风险。

0 个答案:

没有答案