首先,我不是一名安全专家,也不是表示验证,密码存储和wp插件开发的新手。我一直在寻找的任何wp插件教程从未有过关于API密码的章节。谷歌搜索wordpress密码问题没有返回任何令人满意的结果。所以这就是我在这里问的原因。
我想创建一个自定义Wordpress插件,它可以与另一个页面的Soap API一起使用。要使用Soap API,需要登录。因此Wordpress内置函数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 );
}
P.S。:当然,这段代码尚未经过测试,因为我不知道如何使用wordpress插件中的密码,因此我想首先要求最佳实践。
另一个问题是:如果上面代码的修改版本可以工作,密码保存一次并且再也没有加载到仪表板前端(只显示:'•••••'一旦输入)将使用get_option()函数进行保存,解密密码并在后端使用它?
答案 0 :(得分:1)
以下是一些建议。它们不是WP特有的,但可以申请。
1)在选项表中保存加密密码(使用您想要的任何加密功能,只是不要自己编写)
2)在选项页面中,只需输入密码即可。将该字段留空,如果数据库中已存储密码,则不要求输入该字段。
3)仅在代码中实际需要之前解密从选项表中检索到的密码。