到处都有很多关于此的问题,但没有一个问题得到解答。 WooCommerce没有通过用户名和密码支持基于客户的身份验证。
我们可以创建API密钥来访问woo commerce上的数据,但不限制每个用户。一旦您访问了API,所有客户都可以访问。信息变得可访问。 (不相关,但我也使用nativescript,所以如果代码被反编译,因为它的javascript文件,所有消费者的秘密等都是可访问的。所以我不能使用它。)
有人试图让WooCommerce接受他的拉动请求,但显然它被拒绝了。他创建了一个端点,用用户名和密码验证客户。
我的问题是,如果我在访问API时使用HTTPS,这有多安全?
是否可以利用DDOS攻击来查找密码等? 我是否应该添加一些额外的代码,例如sleep(1000)(可能不是最聪明的方法),以使身份验证更慢,因此密码不能通过迭代来破解。
对客户仅对其数据进行身份验证的最佳,安全且简便的方法是什么?
代码如下:
/**
* Login a customer
*
* @since 2.2
* @param array $data
* @return array
*/
public function login_customer( $data ) {
// Checks the username.
if ( ! isset( $data['username'] ) ) {
return new WP_Error( 'woocommerce_api_missing_customer_username', sprintf( __( 'Missing parameter %s', 'woocommerce' ), 'username' ), array( 'status' => 400 ) );
}
// Checks the password.
if ( ! isset( $data['password'] ) ) {
return new WP_Error( 'woocommerce_api_missing_customer_password', sprintf( __( 'Missing parameter %s', 'woocommerce' ), 'password' ), array( 'status' => 400 ) );
}
// Attempts to login customer
$credentials = array();
$credentials['user_login'] = $data['username'];
$credentials['user_password'] = $data['password'];
$credentials['remember'] = true;
$user = wp_signon( $credentials, false );
// Checks for an error in the customer login.
if ( is_wp_error( $user) ) {
return new WP_Error( 'woocommerce_api_cannot_login_customer', $user->get_error_message(), array( 'status' => 400 ) );
}
do_action( 'woocommerce_api_login_customer', $user );
$this->server->send_status( 201 );
return $this->get_customer( $user->ID );
}