{"id":258758,"date":"2025-11-10T17:57:59","date_gmt":"2025-11-10T17:57:59","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/secure-login-collector\/"},"modified":"2026-01-27T21:05:04","modified_gmt":"2026-01-27T21:05:04","slug":"secure-login-collector","status":"publish","type":"plugin","link":"https:\/\/de.wordpress.org\/plugins\/secure-login-collector\/","author":14795429,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.0.7","stable_tag":"2.0.7","tested":"6.8.5","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Secure Login Collector","header_author":"Mike Miler","header_description":"Securely collects and stores encrypted login credentials from clients via frontend form with email notifications.","assets_banners_color":"5c6166","last_updated":"2026-01-27 21:05:04","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wp-mike.com","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":0,"downloads":303,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.3":{"tag":"2.0.3","author":"Mike.Miler","date":"2025-11-10 20:34:18"},"2.0.4":{"tag":"2.0.4","author":"Mike.Miler","date":"2025-11-17 15:18:13"},"2.0.5":{"tag":"2.0.5","author":"Mike.Miler","date":"2025-12-02 09:39:08"},"2.0.6":{"tag":"2.0.6","author":"Mike.Miler","date":"2025-12-02 09:39:08"},"2.0.7":{"tag":"2.0.7","author":"Mike.Miler","date":"2026-01-27 21:05:04"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3393122,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3393213,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3393213,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3448188,"resolution":false,"location":"assets","locale":"","contents":"{\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=secure-login-collector\",\"preferredVersions\":{\"php\":\"8.1\",\"wp\":\"6.5\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"secure-login-collector\"}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once '\\\/wordpress\\\/wp-load.php';\\nrequire_once ABSPATH . 'wp-admin\\\/includes\\\/plugin.php';\\nrequire_once ABSPATH . 'wp-admin\\\/includes\\\/post.php';\\nrequire_once ABSPATH . 'wp-admin\\\/includes\\\/file.php';\\n\\n$plugin_slug = 'secure-login-collector\\\/secure-login-collector.php';\\n\\nif ( function_exists( 'is_plugin_active' ) && ! is_plugin_active( $plugin_slug ) ) {\\n    activate_plugin( $plugin_slug );\\n}\\n\\nif ( class_exists( 'SecureLoginCollector' ) ) {\\n    $collector = SecureLoginCollector::instance();\\n    if ( method_exists( $collector, 'activate' ) ) {\\n        $collector->activate();\\n    }\\n}\\n\\nglobal $wpdb;\\n$table_name = $wpdb->prefix . 'seculoco_data';\\nif ( class_exists( 'Seculoco_Database_Manager' ) ) {\\n    $db_manager = new Seculoco_Database_Manager( $table_name );\\n    $db_manager->create_table();\\n} else {\\n    $wpdb->query( \\\"CREATE TABLE IF NOT EXISTS {$table_name} (id mediumint(9) NOT NULL AUTO_INCREMENT, encrypted_data longtext NOT NULL, metadata text NOT NULL, user_id bigint(20) NOT NULL, ip_address varchar(45) NOT NULL, user_agent text NOT NULL, created_at datetime DEFAULT CURRENT_TIMESTAMP, retention_until datetime DEFAULT NULL, is_expired tinyint(1) DEFAULT 0, undecryptable tinyint(1) DEFAULT 0, undecryptable_at datetime DEFAULT NULL, PRIMARY KEY  (id))\\\" );\\n}\\n\\n$public_key = <<<'PEM'\\n-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoZTIR12nJiT43ofIO0v4\\nszZZcMoQdXyZ4ddvfxdTG+3CYd\\\/vwQVAS8V8QGini+y92QYboDu2IkyaBtC9+m36\\nlDUJR2i8F9dru80zeI6DM2pEIBBVbtUa5oLLMJmlHV81taDYOZ0BX8LRN1EGF0aI\\nSf2h0DIvXwhYh9ai4nNZGj4l1tGdEYF+a0uiBaNeYsHQEbXen\\\/hlvF9SFIgUU9LQ\\nB6CKzaDYbDUABQqiTHWNtqRA2mDQSw+C4g0aiSQNgviAe6Dph42oYsEPJgldtOLf\\nm4qHwoYUwV8jMNMevLnjv\\\/hb+KS0N\\\/sAaNqsqmhaa1JW6CyiACjlphS2KrC6kwjF\\nZQIDAQAB\\n-----END PUBLIC KEY-----\\nPEM;\\n\\n$wrapped_key = json_decode('{\\n    \\\"method\\\": \\\"password\\\",\\n    \\\"encrypted_data\\\": \\\"iUqepvVJQmThIiijtPp74VuJBdk92UlQD7+lHL2Y\\\\\\\/JceyBPrllt7sPBN351kIiOUpLDnmv4AXn5SpZdfImGRzifk0CwUzzaXLRa5hgq+8z15Nsg97EPt8JjDsOh2ZxGkfrfFcPbhH1qiwUcas20uJFqrsY8qun6GoY57QTMEWOXNU7gYYxskAGnPh+sV7DHXZujYKwhOGBBfYxqH76NqVFGNrk1TCH+UAB3FA74+v1bahrKlmII\\\\\\\/ch5YNQn+kokbsTWgn3CLM5uuzUxmAXS3u5TqhI\\\\\\\/yDRCswdof38WcOod11uzG5nSOI\\\\\\\/wgtt1pEXu+rEy7ibjmNhulT4ios8p9xoXXQ1Li3ecVb5ZhTDNpCfd3AWDiLHh7T6H\\\\\\\/RJBBEmMUNf+XXa8YNRVFCV1izGiAIrM6nTrZkMtUhbApk4Mu2afyjGHYP3MxeARRm\\\\\\\/lbQs3GWpFhwaMaAlU1AFmiPLOZBebeEo+ZZxAahj1qFcEn6PT8QWgLYqlPzw1VasmKQzxs4K11Q7Yg3lj+NMHo25eQ1M1SPFckKAhAUpWjt\\\\\\\/aBbW2rAvdOPPsfPeFIQAaou+pqw6JJvmPy2VO9jWTuOCB7a9NqZeS+M9qAnI0N7sUHYF+SnYajF4JVyj+i59BMV3nB5l3vK1SvXJVlx0tcdbyGEPuzfD4sRvPSV58t0wH7pdHujwJ+kYfRFrI\\\\\\\/w97EKSORPW0O0aYkOReVsKBzMOMlvsYDLEMFr+FzsjHNjagLasvpsnsbsqu0ANBTBtyLdZCBo2hS6nUpJulU9ba2uSOxIXvz5bnKhwn\\\\\\\/J7xoAdYeh0mUnTXvF+\\\\\\\/mb7LJr3t0sosXAcSGYxh\\\\\\\/RTR9ZagDqgYVKMKJ+3YKM7WLsDCYF3XQzvbxtdnf90JvE7NpLLIlqVWQYTGcGHdvGp\\\\\\\/zS9AtrvqRrbvOkB+pBCN6w9J6QLqzmw28cXPiirbFavjRcpIb0mKTHuHQM7M8ZHlmoduBS+8oGUdLO9gtvV5mV4+rRxsDAchCq2oY09CqSFy7qbm4fboPi2LuTp53tKPLeZ\\\\\\\/w486fJtrQCqa\\\\\\\/U5njEii+l8xKS+TBIb0QL3iXJrHpqODU2vygsLINWQemokGSHZNoXDSQsI8N1e8WBVwATkfg3zy2xEfmR+MgZ0j55gSrJF0tCPKycrPx5VlSdiYG6kXcDfx12XPCsKvs4eRTMC49y5herVntGfIl4E2MUzRonaIr1FKvV\\\\\\\/OGPNaRso3ZU+zXmi5HfQFxL2\\\\\\\/70KKb\\\\\\\/6Lh+vFIr9F+J\\\\\\\/cBRqtXTFBzJ+jCirRJVX0HArInoef9vu1FUThQGbafHCImjMFAlcY+G\\\\\\\/UsHr070Wd4gqOOBZqYEVHbGfG2av6wDYBLpzCYzMsKomcmVwRUBQ1ww+vuJTwlxxXEfMY3lKKndFfSofe5aHrVN6ELhtMeTXP7N4Yv4b\\\\\\\/cBvz6e3817jbXWO05Laxc+HI2yEzYFpsSPx0cOWjrI8LT6MFilpBUe9fcHdmsTvL7nRuDLuyCfX\\\\\\\/NdJrOYTUwBWE+jk+wjvKNQKKKCHKscKzEXu5P2E6N7zGWzF7BeamDbSLBZVC2NV2IzyiHZsHfftg+cJSnbgclWLO2Xg3fMX96cO+2MkuGob0Jy5lZOBu5JsPSQ1vNWUk0ZJ6kqm3Okbu0uXILoiaNH21ODypwl0PnJVzDdpZ3Pc6\\\\\\\/2OuHKPM3RayGgmfTLyu9TkYCbv8t2eoRis056RrWMnyq0ALIWWdgaG2TI0NnoL7foTfqobgsYBVPIHPob3dosenP21i1mXrRV7w7f4K5oKi4nW30D1\\\\\\\/AMaxlr2rcVr++x8blrJt23IX5qehZb2Od+BBALgz3ATcwTH8cdRKn7vN6UswcGnddrtaaYL4wiCfCHRZ2njTyViLyQzuZ6JhFDJXzQzQ4SLMuCg\\\\\\\/IQ47NYo2SGuKRj+lb\\\\\\\/JrG5siowjWKw0xhzy2v0AILBXwC0b9PifcO7cxCihc18YExyWzZYRChiKldAKfNE0Qy5Fn5x\\\\\\\/cNnIAxwZo+MfLhy756Lyqf1ziiQtsAyAMzAo0JudvgoXTDMVHYd0Kdxz80EKhtwFDJ5LIZs0zLSyac37GWmtHWImlTAi+sCPyp2zMjHRaoEGCx4a6G7DkuTK\\\\\\\/A8FvFPgBxkIt\\\\\\\/gKSO0\\\\\\\/A9+s8wzCb5ShSwCEx0sB9en18xxCUD1ai3jvTquUxskk0EIX\\\\\\\/cA9xhxeZZC3CYdp4rMaUVC8WkzZjTaQYbwvaMoJM49DIHfzMX3U3290kLCtBCyq9itqjjrNL+Bz\\\\\\\/3Jlzf\\\\\\\/5c\\\\\\\/BPqrzbS2\\\",\\n    \\\"iv\\\": \\\"eXKy2q1H1meaKDGp\\\",\\n    \\\"salt\\\": \\\"gV0eEX3Xxmg08LMw4jMzqZuH+90anVwNT6oOys5k5xI=\\\",\\n    \\\"tag\\\": \\\"o+j2mTxuY2JtNk72LUr7Qg==\\\",\\n    \\\"algorithm\\\": \\\"AES-256-GCM\\\",\\n    \\\"kdf\\\": \\\"PBKDF2\\\",\\n    \\\"kdf_iterations\\\": 100000,\\n    \\\"kdf_hash\\\": \\\"SHA-256\\\"\\n}', true);\\n\\nupdate_option( SECULOCO_OPTION_PUBLIC_KEY_STANDARD, $public_key );\\nupdate_option( SECULOCO_OPTION_WRAPPED_PRIVATE_KEY_STANDARD, $wrapped_key );\\nupdate_option( SECULOCO_OPTION_PASSWORD_ACTIVE, true );\\nupdate_option( SECULOCO_OPTION_PASSWORD_ENCRYPTION_ACTIVE, true );\\n\\n$admin_email = get_option( 'admin_email', 'preview@example.com' );\\nupdate_option( 'blogname', 'Secure Login Collector Preview' );\\nupdate_option( 'blogdescription', 'Test encrypted client credential intake with end-to-end SSL and OpenSSL-backed crypto.' );\\nupdate_option( 'permalink_structure', '\\\/%postname%\\\/' );\\nupdate_option( SECULOCO_OPTION_ENABLE_NOTIFICATIONS, true );\\nupdate_option( SECULOCO_OPTION_NOTIFICATION_EMAIL, $admin_email );\\nupdate_option( SECULOCO_OPTION_FRONTEND_TEXT_TYPE, 'default' );\\nupdate_option( SECULOCO_OPTION_DELETE_ON_UNINSTALL, false );\\n\\n\\n$existing_entries = (int) $wpdb->get_var( \\\"SELECT COUNT(*) FROM {$table_name}\\\" );\\n\\nif ( 0 === $existing_entries ) {\\n    $sample_package = array(\\n        'encryptedData'   => 'iPlEvFNxK0hTsx+bZTYWfCqWogJg1ykE+iGH6sHtWAvMIN\\\/8dryjFxoDEFYM8jyGUyqDv1FXOONajcFPpRgM8F2GXScI7lvVAWt3Emtl8zwDrcom+WIKgF1I3Xi3SlxAI8xV22myf+C7GPPCO0H3hP+urQHi6QBhrq6F+8kUQVniUn3rp8HzQ3PzagdcIu\\\/zSFaAh0iqY4Dh71\\\/uP1KwaiSQK1mQsS6z\\\/A701o8ZHAZ6Ea\\\/sis0=',\\n        'rsaEncryptedKey' => 'AnB7e70c+XEbtOkPVk44ayKUze7XSZZAZqGDzIvaZ8OKs1Y613TzfZIr+5mZ0IKZbI27U72l0TrXk\\\/jFG4wYPOJjCM0Zl3U41R+LESmJxqdGEkVtpaqRXw8VYoQ6W\\\/1k3yjjjhhCF2cgykgnk0GmWv7BMN9Hvr3PRQTylCW7WldztBaDrSSzFWVj3C6A785eVHDk0F\\\/IXGDu0hYDc1W7o+x688yPB6wOAL4iqfdiZIvvBNQ+H5bjYqcd2j6Es5iqr\\\/MIX6U7js57wbIRQINCK2T1eBR2Ss809xHdWktma4pO8K6Yc91\\\/Lu4gmri0gCDV\\\/UolRmzeg\\\/ChHhDqVUHPbA==',\\n        'iv'              => 'b2doU4DR0izgkjmD',\\n        'salt'            => 'vmztK+a2OWm4kxxWhjo4RKqP\\\/MJ\\\/D1aZbjKLbac+ZTs=',\\n        'isProEncrypted'  => false,\\n        'credentialId'    => null,\\n        'version'         => 2,\\n    );\\n\\n    $sample_metadata = array(\\n        'email'              => 'client@example.com',\\n        'name'               => 'Acme Client',\\n        'login_url'          => 'https:\\\/\\\/example.com\\\/login',\\n        'created_at'         => '2024-08-01T12:00:00Z',\\n        'encryption_type'    => 'aes-rsa-password-v3',\\n        'encryption_version' => 2,\\n        'is_pro_encrypted'   => false,\\n    );\\n\\n    $insert_payload = array(\\n        'encrypted_data' => wp_json_encode( $sample_package ),\\n        'metadata'       => wp_json_encode( $sample_metadata ),\\n        'user_id'        => 0,\\n        'ip_address'     => '203.0.113.10',\\n        'user_agent'     => 'SecureLoginCollector Preview Seeder',\\n    );\\n\\n    if ( isset( $db_manager ) && $db_manager instanceof Seculoco_Database_Manager ) {\\n        $db_manager->insert_entry( $insert_payload );\\n    } else {\\n        $wpdb->insert( $table_name, $insert_payload );\\n    }\\n}\\n\\n$page_slug = 'secure-login-intake';\\n$page_title = 'Secure Login Intake';\\n$page_content = '[seculoco_form]';\\n\\n$page_args = array(\\n    'post_title'   => $page_title,\\n    'post_name'    => $page_slug,\\n    'post_status'  => 'publish',\\n    'post_type'    => 'page',\\n    'post_content' => $page_content,\\n);\\n\\n$page_id = 0;\\n$existing_page = get_page_by_path( $page_slug );\\nif ( $existing_page instanceof WP_Post ) {\\n    $page_args['ID'] = $existing_page->ID;\\n    $page_id = wp_update_post( $page_args );\\n} else {\\n    $page_id = wp_insert_post( $page_args );\\n}\\n\\nif ( ! is_wp_error( $page_id ) && $page_id ) {\\n    update_option( 'show_on_front', 'page' );\\n    update_option( 'page_on_front', $page_id );\\n}\\n\\n$mu_dir = WP_CONTENT_DIR . '\\\/mu-plugins';\\nif ( ! is_dir( $mu_dir ) ) {\\n    wp_mkdir_p( $mu_dir );\\n}\\n$helper_path = trailingslashit( $mu_dir ) . 'seculoco-preview-helper.php';\\n$helper_code = <<<'PHP'\\n<?php\\n\\\/*\\nPlugin Name: Secure Login Collector Preview Helper\\nDescription: Adds admin instructions for the preview environment.\\n*\\\/\\nadd_action( 'admin_notices', function () {\\n    if ( ! current_user_can( 'manage_options' ) ) {\\n        return;\\n    }\\n    $intake_url = esc_url( home_url( '\\\/secure-login-intake\\\/' ) );\\n    echo '<div class=\\\"notice notice-info\\\"><p><strong>Secure Login Collector Preview:<\\\/strong> Use master password <code>PreviewMaster!123<\\\/code> to decrypt entries. Frontend form: <a href=\\\"' . $intake_url . '\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\">Open form<\\\/a>.<\\\/p><\\\/div>';\\n} );\\nPHP;\\nfile_put_contents( $helper_path, $helper_code );\\n\\nif ( function_exists( 'flush_rewrite_rules' ) ) {\\n    flush_rewrite_rules( false );\\n}\\n?>\\n\"}]}"}},"all_blocks":[],"tagged_versions":["2.0.3","2.0.4","2.0.5","2.0.6","2.0.7"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3397166,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3397166,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3397166,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3397166,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3397166,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3397166,"resolution":"6","location":"assets","locale":""}},"screenshots":{"1":"The frontend form where your client enters their sensitive login data","2":"Encryption of the login data in the client\u2019s browser before it is sent","3":"Confirmation message that the login data was securely transmitted","4":"All submitted login data listed in your WordPress backend","5":"To view the login data, you must decrypt it with your previously set master password","6":"Decrypted login data displayed in your dashboard"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[250494,219240,602,1930,250495],"plugin_category":[38,54],"plugin_contributors":[189653],"plugin_business_model":[],"class_list":["post-258758","plugin","type-plugin","status-publish","hentry","plugin_tags-credential-management","plugin_tags-data-security","plugin_tags-login","plugin_tags-password","plugin_tags-password-collection","plugin_category-authentication","plugin_category-security-and-spam-protection","plugin_contributors-mikemiler","plugin_committers-mikemiler"],"banners":{"banner":"https:\/\/ps.w.org\/secure-login-collector\/assets\/banner-772x250.png?rev=3393213","banner_2x":"https:\/\/ps.w.org\/secure-login-collector\/assets\/banner-1544x500.png?rev=3393213","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/secure-login-collector\/assets\/icon-256x256.png?rev=3393122","icon_2x":"https:\/\/ps.w.org\/secure-login-collector\/assets\/icon-256x256.png?rev=3393122","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/secure-login-collector\/assets\/screenshot-1.png?rev=3397166","caption":"The frontend form where your client enters their sensitive login data"},{"src":"https:\/\/ps.w.org\/secure-login-collector\/assets\/screenshot-2.png?rev=3397166","caption":"Encryption of the login data in the client\u2019s browser before it is sent"},{"src":"https:\/\/ps.w.org\/secure-login-collector\/assets\/screenshot-3.png?rev=3397166","caption":"Confirmation message that the login data was securely transmitted"},{"src":"https:\/\/ps.w.org\/secure-login-collector\/assets\/screenshot-4.png?rev=3397166","caption":"All submitted login data listed in your WordPress backend"},{"src":"https:\/\/ps.w.org\/secure-login-collector\/assets\/screenshot-5.png?rev=3397166","caption":"To view the login data, you must decrypt it with your previously set master password"},{"src":"https:\/\/ps.w.org\/secure-login-collector\/assets\/screenshot-6.png?rev=3397166","caption":"Decrypted login data displayed in your dashboard"}],"raw_content":"<!--section=description-->\n<p><strong>Secure Login Collector<\/strong> gives agencies and freelancers a safe hand-off point for client credentials. Clients fill in a branded form, everything is encrypted before it leaves their browser, and your team only unlocks it inside WordPress. No more password spreadsheets, chat messages, or liability-inducing emails.<\/p>\n\n<h4>How a login data submission flows<\/h4>\n\n<ol>\n<li>Client opens your credential intake page and fills in the required fields (name, email, service, username, password, notes (optiona)).<\/li>\n<li>The data is locked on their device before it is sent anywhere [browser-based Web Crypto + RSA-2048 key exchange + AES-256-GCM payloads].<\/li>\n<li>The encrypted package lands in your WP database table together with metadata for auditing [Zero-knowledge encryption].<\/li>\n<li>Your team gets notified, signs in to WordPress, and decrypts items inside the admin dashboard.<\/li>\n<\/ol>\n\n<h4>Free version features (included)<\/h4>\n\n<ul>\n<li><strong>Client-side sealing<\/strong> \u2013 credentials are encrypted before they leave the browser, so email or transport leaks cannot expose them.<\/li>\n<li><strong>Zero-knowledge encryption<\/strong> \u2013 the server never sees the unwrapped private key; secrets are only readable once an admin unlocks them locally inside WordPress.<\/li>\n<li><strong>WP admin decryption<\/strong> \u2013 only logged-in admins with the proper capability and the correct password can unlock submissions inside the dashboard, keeping everything in one place.<\/li>\n<li><strong>Submission inbox &amp; search<\/strong> \u2013 view, sort, and filter all requests with name, service, timestamps, and notes, then copy credentials when you need them.<\/li>\n<li><strong>Instant notifications<\/strong> \u2013 each submission triggers an email so projects keep moving without checking the dashboard every hour.<\/li>\n<li><strong>Accessible client experience<\/strong> \u2013 responsive form, password visibility toggle, optional help text, and field-level validation keep clients confident while still being secure.<\/li>\n<\/ul>\n\n<h4>Pro version extras (via Secure Login Collector Pro)<\/h4>\n\n<ul>\n<li><strong>Passkey-first approvals<\/strong> \u2013 require Touch ID, Windows Hello, YubiKey, or password-manager passkeys before every decrypt\/export event.<\/li>\n<li><strong>Spam and bot defense<\/strong> \u2013 invisible honeypot fields, nonce verification, rate limiting, and IP-aware hooks block automated dumps without annoying clients.<\/li>\n<li><strong>Retention &amp; cleanup controls<\/strong> \u2013 choose how long data stays accessible and let the plugin redact expired payloads automatically.<\/li>\n<li><strong>Bulk decrypt &amp; export<\/strong> \u2013 decrypt multiple entries at once and export directly to Bitwarden, 1Password, LastPass, Dashlane, CSV, or JSON for team password vaults.<\/li>\n<\/ul>\n\n<h4>Freemius &amp; privacy<\/h4>\n\n<p>This plugin bundles the Freemius SDK for licensing, secure payments, and (optional) telemetry. Nothing is shared until you explicitly opt in. When you do, only environment details (site URL, WP\/PHP version, plugin version) plus contact email\/locale are sent to Freemius so upgrades and receipts work. Client submissions, encrypted payloads, and decrypted credentials never leave your hosting environment.<\/p>\n\n<h4>Disclaimer<\/h4>\n\n<p>Security is a shared responsibility. We ship the tools, but you control how and where they are used. Install SSL, keep WordPress updated, limit admin access, and review submissions promptly. We are not liable for any damage, data loss, or regulatory issues that arise from using this plugin\u2014use it at your own risk.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin bundles the Freemius SDK to handle optional telemetry, licensing, and upgrade flows. Opt-in is required before any data is shared.<\/p>\n\n<p>What is sent (only after opt-in):\n* Site URL, WordPress version, PHP version, and plugin version \u2013 for compatibility checks.\n* Admin email and locale \u2013 so Freemius can send license receipts and support messages if you later purchase Pro.<\/p>\n\n<p>No client submissions, passwords, or encrypted payloads ever leave your server. All credential data stays inside your WordPress database.<\/p>\n\n<p>Freemius Terms: https:\/\/freemius.com\/terms\/<br \/>\nFreemius Privacy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Go to Login Data \u2192 Settings to configure notifications<\/li>\n<li>Register your master password for decryption of login data<\/li>\n<li>Create a page and add shortcode: <code>[seculoco_form]<\/code><\/li>\n<li>Share the page link with clients<\/li>\n<\/ol>\n\n<p>For the Pro version (separate plugin available from Freemius), register your passkey device after installation.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20is%20this%20better%20than%20email%3F\"><h3>Why is this better than email?<\/h3><\/dt>\n<dd><p>Email sends passwords in plain text. This plugin encrypts data in the browser using RSA-2048 + AES-256, and the Pro upgrade layers in automated spam filtering plus retention windows so nothing lingers longer than it should.<\/p><\/dd>\n<dt id=\"how%20does%20spam%20protection%20work%3F\"><h3>How does spam protection work?<\/h3><\/dt>\n<dd><p>The Pro version bundles dynamic honeypot fields, nonce rotation, rate limiting, and time-based validation to keep bots out without bothering humans.<\/p><\/dd>\n<dt id=\"what%27s%20the%20difference%20between%20free%20and%20pro%3F\"><h3>What's the difference between Free and Pro?<\/h3><\/dt>\n<dd><p>Free: zero-knowledge encryption inside WordPress with manual cleanup and notifications. The Pro version (available as a separate plugin) adds hardware-backed approvals, built-in spam and bot defense, retention automation, bulk exports, and white-label controls.<\/p><\/dd>\n<dt id=\"can%20my%20team%20access%20credentials%3F\"><h3>Can my team access credentials?<\/h3><\/dt>\n<dd><p>Yes. Any WordPress admin can decrypt in free version. The Pro version (separate plugin) supports multiple passkey registrations. Export to password managers for team sharing.<\/p><\/dd>\n<dt id=\"how%20long%20is%20data%20stored%3F\"><h3>How long is data stored?<\/h3><\/dt>\n<dd><p>Free users manually delete entries when a project wraps. Pro users set retention from 1-365 days so the plugin auto-redacts on schedule (most agencies use 7-30 days).<\/p><\/dd>\n<dt id=\"what%20password%20managers%20are%20supported%3F\"><h3>What password managers are supported?<\/h3><\/dt>\n<dd><p>Bitwarden, 1Password, LastPass, Dashlane, KeePass, Chrome, Firefox, Safari, and CSV.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.7<\/h4>\n\n<ul>\n<li>Fix error message when sending form<\/li>\n<\/ul>\n\n<h4>2.0.6<\/h4>\n\n<ul>\n<li>Update Freemius SDK<\/li>\n<\/ul>\n\n<h4>2.0.5<\/h4>\n\n<ul>\n<li>Fix Translations<\/li>\n<\/ul>\n\n<h4>2.0.4<\/h4>\n\n<ul>\n<li>Fix translations<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>Remove branding from frontend<\/li>\n<li>Code quality improvements<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Refactoring for launch at wordpres.org<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with RSA-2048 + AES-256 encryption<\/li>\n<li>Auto-deletion<\/li>\n<li>Email notifications for new submissions<\/li>\n<\/ul>","raw_excerpt":"Secure way for agencies to receive client login credentials. Stop asking clients to send passwords via email.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/258758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=258758"}],"author":[{"embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mikemiler"}],"wp:attachment":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=258758"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=258758"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=258758"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=258758"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=258758"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=258758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}