保存和处理插件选项页面密码的最佳实践/安全方法是什么?

时间:2014-09-10 10:45:54

标签: wordpress api security plugins passwords

首先,我不是一名安全专家,也不是表示验证,密码存储和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()函数进行保存,解密密码并在后端使用它?

1 个答案:

答案 0 :(得分:1)

以下是一些建议。它们不是WP特有的,但可以申请。

1)在选项表中保存加密密码(使用您想要的任何加密功能,只是不要自己编写)

2)在选项页面中,只需输入密码即可。将该字段留空,如果数据库中已存储密码,则不要求输入该字段。

3)仅在代码中实际需要之前解密从选项表中检索到的密码。