Wordpress 什么';这是保存和处理插件密码的最佳做法/安全方法';s选项页?
首先,我不是一个安全专家,也不熟悉表单验证、密码存储和wp插件开发。我看过的任何wp插件教程都没有关于API密码的章节。谷歌搜索wordpress密码问题并没有得到任何令人满意的结果。这就是我在这里问的原因 我想创建一个自定义Wordpress插件,它与另一个页面的Soap API一起工作。要使用Soap API,需要登录。因此Wordpress内置函数Wordpress 什么';这是保存和处理插件密码的最佳做法/安全方法';s选项页?,wordpress,api,security,plugins,passwords,Wordpress,Api,Security,Plugins,Passwords,首先,我不是一个安全专家,也不熟悉表单验证、密码存储和wp插件开发。我看过的任何wp插件教程都没有关于API密码的章节。谷歌搜索wordpress密码问题并没有得到任何令人满意的结果。这就是我在这里问的原因 我想创建一个自定义Wordpress插件,它与另一个页面的Soap API一起工作。要使用Soap API,需要登录。因此Wordpress内置函数add_option(),update_option()和get_option()都使用纯文本 但我知道在wp_config文件中可以保存身份验
add_option()
,update_option()
和get_option()
都使用纯文本
但我知道在wp_config文件中可以保存身份验证密钥。但是如何在选项页表单中使用它们来加密密码呢?如果用户再次访问该页面,是否可以将其存储在数据库中,解密并在后端使用,但不在选项页面上显示。因此,密码字段中只有一些黑点(与通行证中的字符数量不同),并且密码选项仅在写入该字段时更新
通常代码如下所示:
register_setting( 'my_plugins_option', 'my_options', 'my_validation_function' );
$options = array(
'user' = > 'name',
'password' = > 'pass',
//... other options
)
update_option( 'my_plugins_option', $options );
function my_validation_function($input){
if($input['password']=='•••••'){
//use the default value of the database if nothing was changed
$old_options=get_option('my_plugins_option');
$input['password']=some_decrypting_function($old_options['password']);
}
else{
//use the password sent from the form
$password=esc_sql(some_encrypting_function($input['password']));
}
// ... validate the other inputs
update_option( 'my_plugins_soap_api_pass', $password );
}
但我怎样才能让这更安全呢?我看过很多插件的例子,但是没有关于存储密码的。我在找这样的东西:
register_setting( 'my_plugins_option', 'my_options', 'my_validation_function' );
$options = array(
'user' = > 'name',
'password' = > 'pass',
//... other options
)
update_option( 'my_plugins_option', $options );
function my_validation_function($input){
if($input['password']=='•••••'){
//use the default value of the database if nothing was changed
$old_options=get_option('my_plugins_option');
$input['password']=some_decrypting_function($old_options['password']);
}
else{
//use the password sent from the form
$password=esc_sql(some_encrypting_function($input['password']));
}
// ... validate the other inputs
update_option( 'my_plugins_soap_api_pass', $password );
}
注:这段代码当然还没有经过测试,因为我不知道如何在wordpress插件中使用密码,所以我想先询问一下最佳实践
另一个问题是:如果上面代码的修改版本可以工作,并且密码保存一次,并且不再加载到仪表板前端(只显示以下内容:“••••••”一旦输入),是否可以保存以使用get_option()函数,解密密码并在后端使用它?以下是一些建议。它们并不特定于WP,但可以应用 1) 在选项表中保存加密的密码(使用您想要的任何加密功能,只是不要编写自己的密码) 2) 在选项页面中,只需不输出密码即可。将该字段留空,如果数据库中已经存储了密码,则不需要输入该字段 3) 仅在代码中实际需要密码之前解密从选项表检索到的密码