[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fwyM8TajxxEOMsT3Azn9KekgMnO-dG4AjBw5auUN4GfM":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29,"vulnerabilities":30,"developer":31,"crawl_stats":28,"alternatives":36,"analysis":125,"fingerprints":254},"otp-content-protect","OTP Content Protect","1.3.5","Tim Ehling","https:\u002F\u002Fprofiles.wordpress.org\u002Ftehling\u002F","\u003Cp>As a WordPress owner who values both \u003Cstrong>security and a seamless user experience\u003C\u002Fstrong>, you often face the challenge of protecting sensitive information. Most password solutions force your visitors to register for an account, granting them potential access to your WordPress environment.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>This is where “OTP Content Protect” comes in, offering an innovative way to protect your content with a One-Time Password (OTP).\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Our plugin was designed to give you full control over your content without opening the doors to your WordPress backend for strangers. Easily and effectively protect individual posts, pages, or even downloads. Your visitors don’t need an account and don’t have to register—they simply enter the one-time password you provide and get instant access.\u003C\u002Fp>\n\u003Cp>By not granting unnecessary backend access, you actively minimize the risk of hacker or spam activities. “OTP Content Protect” is the perfect blend of simplicity, security, and innovation, making it the ideal password protection for your WordPress site when you need to lock specific content without burdening users with registration.\u003C\u002Fp>\n\u003Ch4>Support & Feature Requests\u003C\u002Fh4>\n\u003Cp>We are constantly developing the plugin and welcome your feedback!\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>For questions or issues,\u003C\u002Fstrong> please use the official \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fotp-content-protect\u002F\" rel=\"ugc\">Support Forum on WordPress.org\u003C\u002Fa> or report a bug directly via our \u003Ca href=\"https:\u002F\u002Fdie-mainagentur.de\u002Fen\u002Fwordpress-plugin-otp-content-protect\u002F#submitbug\" rel=\"nofollow ugc\">Submit a Bug form\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Have an idea for a new feature?\u003C\u002Fstrong> Submit your feature request easily through our website: \u003Ca href=\"https:\u002F\u002Fdie-mainagentur.de\u002Fen\u002Fwordpress-plugin-otp-content-protect\u002F#featurerequest\" rel=\"nofollow ugc\">Submit a Feature Request\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Protection Without Registration:\u003C\u002Fstrong> The key advantage—visitors don’t need a WordPress account.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Flexible Content Protection:\u003C\u002Fstrong> Secure posts, pages, or any custom post type.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Simple Password Generation:\u003C\u002Fstrong> Creates secure, alphanumeric OTPs (8–10 characters).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Full Control:\u003C\u002Fstrong> Stores creation date, optional expiration date, and a timestamp of when it was used.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Reusable Passwords:\u003C\u002Fstrong> A used OTP can easily be reset for reuse.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Modern Admin Interface:\u003C\u002Fstrong> AJAX-powered content list with search and convenient post-type tabs.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Clean Uninstall:\u003C\u002Fstrong> An uninstall script completely removes all plugin data from the database upon deletion if desired.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Built for the World:\u003C\u002Fstrong> Fully internationalized (i18n) and ready for translation.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Go to the OTP Protect settings page.\u003C\u002Fli>\n\u003Cli>Select the content to protect and generate or enter an OTP.\u003C\u002Fli>\n\u003Cli>(Optional) Set an expiration date.\u003C\u002Fli>\n\u003Cli>Save the OTP and share it with the intended users.\u003C\u002Fli>\n\u003Cli>When a visitor accesses the protected content, they will see a simple input form for the password.\u003C\u002Fli>\n\u003Cli>Upon valid entry, the original content is displayed instantly.\u003C\u002Fli>\n\u003Cli>In the admin overview, you can easily reset or delete used OTPs.\u003C\u002Fli>\n\u003C\u002Fol>\n","The easiest way to protect WordPress content with an OTP. Secure posts and pages with a one-time password—no user registration required.",40,535,100,1,"2025-07-18T17:28:00.000Z","6.8.5","6.0","7.0",[20,21,22,23,24],"content-locker","content-protect","no-registration","otp","password-protect","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fotp-content-protect\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fotp-content-protect.1.3.5.zip",0,null,"2026-03-15T15:16:48.613Z",[],{"slug":32,"display_name":7,"profile_url":8,"plugin_count":14,"total_installs":11,"avg_security_score":13,"avg_patch_time_days":33,"trust_score":34,"computed_at":35},"tehling",30,94,"2026-04-04T14:43:55.127Z",[37,58,75,92,112],{"slug":38,"name":39,"version":40,"author":41,"author_profile":42,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":27,"num_ratings":27,"last_updated":47,"tested_up_to":48,"requires_at_least":49,"requires_php":50,"tags":51,"homepage":50,"download_link":56,"security_score":57,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"contentprotector","ContentProtector – password protect your page, post or text","1.0","Anton","https:\u002F\u002Fprofiles.wordpress.org\u002Fantonphp\u002F","\u003Cp>\u003Cstrong>ContentProtector\u003C\u002Fstrong> is a lightweight and flexible plugin that allows you to protect your WordPress content with passwords. You can protect an entire post or page, or just a specific portion of the content.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Global Protection\u003C\u002Fstrong>: Set a global password for all posts or pages.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Partial Content Protection\u003C\u002Fstrong>: Use a shortcode to protect only a specific part of your content.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Customizable\u003C\u002Fstrong>: Easy to set up with a clean and intuitive admin interface.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Secure\u003C\u002Fstrong>: Uses WordPress Nonces and cookies for secure password handling.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How It Works\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Use the shortcode \u003Ccode>[cpwp_protect password=\"your_password\"]\u003C\u002Fcode> to protect an entire post or page.\u003C\u002Fli>\n\u003Cli>Use \u003Ccode>[cpwp_protect_content password=\"your_password\"]\u003C\u002Fcode> to protect only a portion of your content.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Example for partial content protection:\u003Cbr \u002F>\n    `html\u003Cbr \u002F>\n[cpwp_protect_content password=”pass”]\u003Cbr \u002F>\nThis content is protected by a password. Enter the password to view it.\u003Cbr \u002F>\n[\u002Fcpwp_protect_content]\u003C\u002Fp>\n","Protect your content with passwords using easy-to-use shortcodes. Supports both global protection and partial content protection.",6000,2514,"2025-01-07T20:08:00.000Z","6.7.5","5.8","",[52,53,24,54,55],"content-protection","password","protection","restrict-content","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontentprotector.1.0.zip",92,{"slug":59,"name":60,"version":40,"author":61,"author_profile":62,"description":63,"short_description":64,"active_installs":65,"downloaded":66,"rating":27,"num_ratings":27,"last_updated":67,"tested_up_to":68,"requires_at_least":69,"requires_php":50,"tags":70,"homepage":72,"download_link":73,"security_score":74,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"like-and-read","Like and Read","sangay","https:\u002F\u002Fprofiles.wordpress.org\u002Fsangay\u002F","\u003Cp>Show only excerpts of post\u002Fpage contents. Users have to click Facebook like button to read full post or page.\u003C\u002Fp>\n\u003Cp>You can hide entire pages or posts or just sections of them. Visitors can read first few words (number of characters initially visible can be set) but force them to  click Like button to keep reading.\u003C\u002Fp>\n","Click Facebook like button to read post\u002Fpage contents.",10,1572,"2015-05-30T07:47:00.000Z","4.2.39","3.3",[20,21,71,59],"facebook-like","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Flike-and-read\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flike-and-read.zip",85,{"slug":76,"name":77,"version":78,"author":79,"author_profile":80,"description":81,"short_description":82,"active_installs":27,"downloaded":83,"rating":27,"num_ratings":27,"last_updated":84,"tested_up_to":16,"requires_at_least":85,"requires_php":86,"tags":87,"homepage":90,"download_link":91,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"content-locker-for-email-capture","Content Locker for Email Capture","1.0.0","WP Shopify Expert","https:\u002F\u002Fprofiles.wordpress.org\u002Fwpshopifyexpert\u002F","\u003Cp>Content Locker for Email Capture helps you grow your email list by requiring visitors to subscribe before accessing your premium content. Perfect for bloggers, marketers, and content creators who want to build their email list while providing value to readers.\u003C\u002Fp>\n\u003Cp>Features:\u003Cbr \u002F>\n* Lock any content with shortcodes\u003Cbr \u002F>\n* Customizable subscription forms\u003Cbr \u002F>\n* Integration with popular email marketing services\u003Cbr \u002F>\n* Analytics dashboard\u003Cbr \u002F>\n* Mobile responsive design\u003Cbr \u002F>\n* Multiple locker templates\u003C\u002Fp>\n\u003Ch3>Shortcode Usage\u003C\u002Fh3>\n\u003Cp>Basic Usage:\u003Cbr \u002F>\n[clec_content_lock]Your premium content here[\u002Fclec_content_lock]\u003C\u002Fp>\n","A powerful WordPress plugin that locks premium content behind an email subscription form.",269,"2025-09-12T02:04:00.000Z","6.2","7.2",[20,52,88,89],"email-capture","lead-generation","https:\u002F\u002Fwpshopifyexpert.com\u002Fplugins\u002Fcontent-locker-for-email-capture","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontent-locker-for-email-capture.1.0.0.zip",{"slug":93,"name":94,"version":95,"author":96,"author_profile":97,"description":98,"short_description":99,"active_installs":27,"downloaded":100,"rating":27,"num_ratings":27,"last_updated":101,"tested_up_to":16,"requires_at_least":102,"requires_php":18,"tags":103,"homepage":108,"download_link":109,"security_score":110,"vuln_count":14,"unpatched_count":27,"last_vuln_date":111,"fetched_at":29},"locker-content","Locker Content","1.0.1","AppGlut","https:\u002F\u002Fprofiles.wordpress.org\u002Fappglut\u002F","\u003Cp>\u003Cstrong>Locker Content\u003C\u002Fstrong> is a powerful WordPress plugin that allows you to lock your valuable content behind various engagement gates. Increase user interaction, gather user-generated content, and protect premium content with multiple locking mechanisms.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>✅ \u003Cstrong>Password Protection\u003C\u002Fstrong> – Secure your content with password locks\u003Cbr \u002F>\n✅ \u003Cstrong>Agreement Lock\u003C\u002Fstrong> – Require users to accept terms and conditions\u003Cbr \u002F>\n✅ \u003Cstrong>Post Creation Lock\u003C\u002Fstrong> – Users must create content to unlock yours\u003Cbr \u002F>\n✅ \u003Cstrong>GDPR Compliant\u003C\u002Fstrong> – Built with privacy and data protection in mind\u003Cbr \u002F>\n✅ \u003Cstrong>Rate Limiting\u003C\u002Fstrong> – Prevent abuse with built-in rate limiting\u003Cbr \u002F>\n✅ \u003Cstrong>Spam Protection\u003C\u002Fstrong> – Advanced spam detection for user submissions\u003Cbr \u002F>\n✅ \u003Cstrong>Responsive Design\u003C\u002Fstrong> – Works perfectly on all devices\u003Cbr \u002F>\n✅ \u003Cstrong>Admin Dashboard\u003C\u002Fstrong> – Manage all submissions from one place\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Perfect For:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Content Creators\u003C\u002Fstrong> – Protect premium content and courses\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Marketers\u003C\u002Fstrong> – Generate leads through content gates\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Community Sites\u003C\u002Fstrong> – Encourage user participation and content creation\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Educational Sites\u003C\u002Fstrong> – Require agreement to terms before accessing materials\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Membership Sites\u003C\u002Fstrong> – Control access to exclusive content\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Available Lock Types:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Password Lock\u003C\u002Fstrong> – Traditional password protection with enhanced security features\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Agreement Lock\u003C\u002Fstrong> – Require users to read and agree to terms, privacy policies, or disclaimers\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Post Creation Lock\u003C\u002Fstrong> – Users must submit original content to unlock your premium material\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>Security Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Password hashing for secure storage\u003C\u002Fli>\n\u003Cli>Rate limiting to prevent brute force attacks\u003C\u002Fli>\n\u003Cli>CSRF protection with WordPress nonces\u003C\u002Fli>\n\u003Cli>Input sanitization and validation\u003C\u002Fli>\n\u003Cli>IP anonymization for GDPR compliance\u003C\u002Fli>\n\u003Cli>Spam detection and filtering\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Admin Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Easy-to-use meta boxes for each post\u002Fpage\u003C\u002Fli>\n\u003Cli>Bulk approval\u002Frejection of user submissions\u003C\u002Fli>\n\u003Cli>Detailed submission tracking\u003C\u002Fli>\n\u003Cli>Customizable messages and interface text\u003C\u002Fli>\n\u003Cli>Template override support for developers\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Developer Information\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Template Override Support\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You can override plugin templates by creating files in your theme:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>your-theme\u002F\u003Cbr \u002F>\n├── lockerco\u002F\u003Cbr \u002F>\n│   ├── frontend\u002F\u003Cbr \u002F>\n│   │   ├── password-lock.php\u003Cbr \u002F>\n│   │   ├── agreement-lock.php\u003Cbr \u002F>\n│   │   └── postlock-lock.php\u003Cbr \u002F>\n│   └── admin\u002F\u003Cbr \u002F>\n│       ├── password-fields.php\u003Cbr \u002F>\n│       ├── agreement-fields.php\u003Cbr \u002F>\n│       └── postlock-fields.php\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Action Hooks\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>lockerco_post_submitted\u003C\u002Fcode> – Fires when a user submits a post through the post lock\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Filter Hooks\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>lockerco_password_strength\u003C\u002Fcode> – Modify password strength requirements\u003C\u002Fli>\n\u003Cli>\u003Ccode>lockerco_spam_patterns\u003C\u002Fcode> – Add custom spam detection patterns\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>CSS Classes\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>.lockerco-container\u003C\u002Fcode> – Main container for all lock types\u003C\u002Fli>\n\u003Cli>\u003Ccode>.password-locker\u003C\u002Fcode> – Password lock specific styling\u003C\u002Fli>\n\u003Cli>\u003Ccode>.agreement-locker\u003C\u002Fcode> – Agreement lock specific styling\u003C\u002Fli>\n\u003Cli>\u003Ccode>.postlock-locker\u003C\u002Fcode> – Post creation lock specific styling\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Security Features\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>CSRF protection with WordPress nonces\u003C\u002Fli>\n\u003Cli>Input sanitization using WordPress functions\u003C\u002Fli>\n\u003Cli>Rate limiting to prevent abuse\u003C\u002Fli>\n\u003Cli>Password hashing for secure storage\u003C\u002Fli>\n\u003Cli>IP anonymization for privacy compliance\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>For support, feature requests, or bug reports, please visit our support forum or contact us through the plugin’s official page.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Minimum Requirements:\u003C\u002Fstrong>\u003Cbr \u002F>\n* WordPress 4.7 or higher\u003Cbr \u002F>\n* PHP 7.0 or higher\u003Cbr \u002F>\n* MySQL 5.6 or higher\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Recommended:\u003C\u002Fstrong>\u003Cbr \u002F>\n* WordPress 6.0 or higher\u003Cbr \u002F>\n* PHP 8.0 or higher\u003Cbr \u002F>\n* MySQL 8.0 or higher\u003C\u002Fp>\n","Lock your content behind various engagement gates including password protection, agreement forms, and user-generated content.",257,"2025-11-21T03:29:00.000Z","4.7",[104,20,105,106,107],"content-gates","password-protection","post-lock","user-engagement","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Flocker-content","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flocker-content.1.0.1.zip",99,"2025-11-24 19:16:22",{"slug":113,"name":114,"version":78,"author":115,"author_profile":116,"description":117,"short_description":118,"active_installs":27,"downloaded":119,"rating":27,"num_ratings":27,"last_updated":120,"tested_up_to":16,"requires_at_least":85,"requires_php":121,"tags":122,"homepage":50,"download_link":124,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"riaco-content-protector","RIACO Content Protector","robertoiacono","https:\u002F\u002Fprofiles.wordpress.org\u002Fprototipo88\u002F","\u003Cp>\u003Cstrong>RIACO Content Protector\u003C\u002Fstrong> allows you to protect \u003Cem>any part\u003C\u002Fem> of your WordPress content using a shortcode.\u003Cbr \u002F>\nUnlike the built-in post password protection, this plugin protects only what you wrap, \u003Cem>not the whole post\u003C\u002Fem>.\u003C\u002Fp>\n\u003Cp>Perfect for:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Protecting premium blocks of content  \u003C\u002Fli>\n\u003Cli>Protecting guides, downloads, links, or sensitive sections   \u003C\u002Fli>\n\u003Cli>Paywall-style snippets\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Protect \u003Cstrong>only specific content\u003C\u002Fstrong> inside posts\u002Fpages  \u003C\u002Fli>\n\u003Cli>Uses a minimal shortcode:\u003Cbr \u002F>\n  [riaco_content_protector] Hidden text here [\u002Friaco_content_protector]\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Global password\u003C\u002Fstrong> stored in plain text, like WordPress page passwords.\u003C\u002Fli>\n\u003Cli>AJAX-based form — no page reload  \u003C\u002Fli>\n\u003Cli>Unlocks \u003Cstrong>all protected sections\u003C\u002Fstrong> on the site after correct password  \u003C\u002Fli>\n\u003Cli>Optional cookie persistence (remember unlocked content for a configurable number of days)   \u003C\u002Fli>\n\u003Cli>Secure implementation using nonces, hashed tokens, and transients   \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Important:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>The global password is stored in plain text, just like WordPress page passwords. It can be read by user with ‘manage_options’ ability.\u003C\u002Fli>\n\u003Cli>If the global password or “Remember Unlocked” duration is changed in settings, all existing unlock cookies are invalidated. Users will need to re-enter the new password to access protected content.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How It Works\u003C\u002Fh3>\n\u003Cp>Wrap content you want to protect:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[riaco_content_protector]\nThis text will be hidden until the visitor enters the password.\n[\u002Friaco_content_protector]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Set the global password under:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Settings > Content Protector\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Visitors will see a modern, styled form.\u003Cbr \u002F>\nAfter entering the correct password:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>The content unlocks immediately  \u003C\u002Fli>\n\u003Cli>All other protected areas unlock automatically  \u003C\u002Fli>\n\u003Cli>An optional cookie can keep everything unlocked for a chosen number of days  \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Security\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Nonces on every request  \u003C\u002Fli>\n\u003Cli>Secure HMAC token for cookie authentication  \u003C\u002Fli>\n\u003Cli>Sanitized shortcode attributes  \u003C\u002Fli>\n\u003Cli>Escaped output  \u003C\u002Fli>\n\u003Cli>No sensitive data stored in cookies  \u003C\u002Fli>\n\u003Cli>Global password stored in plain text, like WordPress page passwords. \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Cookie\u003C\u002Fh3>\n\u003Cp>We use this cookie to understand if user unlocked the content: \u003Ccode>riaco_cp_unlocked_global\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3>Style\u003C\u002Fh3>\n\u003Cp>You can style the content protector box.\u003C\u002Fp>\n\u003Cp>It has this class: \u003Ccode>.riaco-cp--container\u003C\u002Fcode>, so you can add in your \u003Ccode>style.css\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>.riaco-cp--container {\n    background: #f8f9fa;\n    padding: 20px;\n    border: 1px solid #ddd;\n    border-radius: 6px;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You can replace button classes using:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'riaco_cp_button_classes', function( $classes ) {\n    return 'button my-custom-button-class';\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Or you can remove button classes:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'riaco_cp_button_classes', function( $classes ) {\n    \u002F\u002F Remove wp-element-button\n    return str_replace( 'wp-element-button', '', $classes );\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This plugin is licensed under GPLv2 or later.\u003C\u002Fp>\n","Protect any portion of your WordPress content using a simple shortcode. Includes global password, AJAX unlock, and site-wide instant access.",113,"2025-12-04T20:52:00.000Z","7.4",[52,123,53,105,55],"hide-content","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Friaco-content-protector.1.0.0.zip",{"attackSurface":126,"codeSignals":165,"taintFlows":185,"riskAssessment":250,"analyzedAt":253},{"hooks":127,"ajaxHandlers":155,"restRoutes":162,"shortcodes":163,"cronEvents":164,"entryPointCount":14,"unprotectedCount":27},[128,134,138,142,146,151],{"type":129,"name":130,"callback":131,"file":132,"line":133},"action","admin_menu","add_admin_menu","otp-content-protect.php",148,{"type":129,"name":135,"callback":136,"file":132,"line":137},"admin_enqueue_scripts","enqueue_admin_assets",149,{"type":129,"name":139,"callback":140,"file":132,"line":141},"admin_post_otpcp_save_otp","save_otp",150,{"type":129,"name":143,"callback":144,"file":132,"line":145},"admin_post_otpcp_delete_otp","delete_otp",151,{"type":147,"name":148,"callback":149,"file":132,"line":150},"filter","the_content","protect_content_filter",156,{"type":129,"name":152,"callback":153,"file":132,"line":154},"template_redirect","gatekeeper_check",158,[156],{"action":157,"nopriv":158,"callback":159,"hasNonce":160,"hasCapCheck":160,"file":132,"line":161},"otpcp_load_content",false,"ajax_load_content",true,152,[],[],[],{"dangerousFunctions":166,"sqlUsage":167,"outputEscaping":174,"fileOperations":27,"externalRequests":27,"nonceChecks":183,"capabilityChecks":183,"bundledLibraries":184},[],{"prepared":168,"raw":14,"locations":169},12,[170],{"file":171,"line":172,"context":173},"uninstall.php",17,"$wpdb->query() with variable interpolation",{"escaped":175,"rawEcho":176,"locations":177},52,2,[178,181],{"file":132,"line":179,"context":180},315,"raw output",{"file":132,"line":182,"context":180},483,5,[],[186,204,224],{"entryPoint":187,"graph":188,"unsanitizedCount":27,"severity":203},"enqueue_admin_assets (otp-content-protect.php:184)",{"nodes":189,"edges":201},[190,195],{"id":191,"type":192,"label":193,"file":132,"line":194},"n0","source","$_GET",193,{"id":196,"type":197,"label":198,"file":132,"line":199,"wp_function":200},"n1","sink","get_row() [SQLi]",203,"get_row",[202],{"from":191,"to":196,"sanitized":160},"low",{"entryPoint":205,"graph":206,"unsanitizedCount":27,"severity":203},"render_list_page (otp-content-protect.php:235)",{"nodes":207,"edges":221},[208,210,214,218],{"id":191,"type":192,"label":193,"file":132,"line":209},238,{"id":196,"type":197,"label":211,"file":132,"line":212,"wp_function":213},"echo() [XSS]",243,"echo",{"id":215,"type":192,"label":216,"file":132,"line":217},"n2","$_REQUEST",248,{"id":219,"type":197,"label":211,"file":132,"line":220,"wp_function":213},"n3",250,[222,223],{"from":191,"to":196,"sanitized":160},{"from":215,"to":219,"sanitized":160},{"entryPoint":225,"graph":226,"unsanitizedCount":27,"severity":203},"\u003Cotp-content-protect> (otp-content-protect.php:0)",{"nodes":227,"edges":245},[228,230,231,233,234,236,238,240],{"id":191,"type":192,"label":229,"file":132,"line":194},"$_GET (x2)",{"id":196,"type":197,"label":198,"file":132,"line":199,"wp_function":200},{"id":215,"type":192,"label":232,"file":132,"line":209},"$_GET (x3)",{"id":219,"type":197,"label":211,"file":132,"line":212,"wp_function":213},{"id":235,"type":192,"label":216,"file":132,"line":217},"n4",{"id":237,"type":197,"label":211,"file":132,"line":220,"wp_function":213},"n5",{"id":239,"type":192,"label":193,"file":132,"line":194},"n6",{"id":241,"type":197,"label":242,"file":132,"line":243,"wp_function":244},"n7","get_results() [SQLi]",507,"get_results",[246,247,248,249],{"from":191,"to":196,"sanitized":160},{"from":215,"to":219,"sanitized":160},{"from":235,"to":237,"sanitized":160},{"from":239,"to":241,"sanitized":160},{"summary":251,"deductions":252},"The \"otp-content-protect\" v1.3.5 plugin exhibits a generally strong security posture based on the provided static analysis. It demonstrates good practices by avoiding dangerous functions, performing a high percentage of SQL queries using prepared statements, and properly escaping most of its output. The plugin also correctly implements nonce and capability checks for its identified entry points, and its attack surface is limited to a single AJAX handler which appears to be protected.\n\nFurthermore, the absence of any recorded vulnerabilities in its history, including critical or high-severity ones, is a positive indicator. The taint analysis also shows no critical or high-severity flows with unsanitized paths, suggesting that user-supplied data is handled with care. The lack of file operations and external HTTP requests also reduces potential attack vectors.\n\nIn conclusion, the plugin appears to be well-developed from a security perspective. Its strengths lie in its robust implementation of security checks, minimal and protected attack surface, and a clean vulnerability history. While no significant weaknesses are evident from this analysis, continuous monitoring and adherence to security best practices remain important for any software.",[],"2026-03-17T05:38:26.747Z",{"wat":255,"direct":264},{"assetPaths":256,"generatorPatterns":259,"scriptPaths":260,"versionParams":261},[257,258],"\u002Fwp-content\u002Fplugins\u002Fotp-content-protect\u002Fcss\u002Fadmin-style.css","\u002Fwp-content\u002Fplugins\u002Fotp-content-protect\u002Fjs\u002Fadmin-script.js",[],[258],[262,263],"otp-content-protect\u002Fcss\u002Fadmin-style.css?ver=","otp-content-protect\u002Fjs\u002Fadmin-script.js?ver=",{"cssClasses":265,"htmlComments":272,"htmlAttributes":275,"restEndpoints":281,"jsGlobals":282,"shortcodeOutput":286},[266,267,268,269,270,271],"otpcp-otp-input","otpcp-message","otpcp-countdown","otpcp-button","otpcp-form-group","otpcp-title",[273,274],"\u003C!-- START DER ÄNDERUNG -->","\u003C!-- ENDE DER ÄNDERUNG -->",[276,277,278,279,280],"data-otpcp-post-id","data-otpcp-countdown-id","data-otpcp-target-element","data-otpcp-action","data-otpcp-post-type",[],[283,284,285],"OTPCP_AJAX_URL","OTPCP_NONCE","OTPCP_SETTINGS",[287,288,289],"\u003Cdiv class=\"otpcp-content-wrapper\">","\u003Cdiv class=\"otpcp-protected-content\">","\u003Cform class=\"otpcp-otp-form\">"]