我正在创建一个插件,它对一个簿记服务进行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发送给我的东西,我也不想做任何事情并将其视为理所当然。
我最感兴趣的是:这样安全吗?这里是否有任何可能的攻击媒介,因为我不想让我的客户面临风险。