[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fBKI_mxjUACd6gcadOSokjoa7MmScVsSqskzphM-hGDE":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":27,"vuln_count":28,"unpatched_count":29,"last_vuln_date":30,"fetched_at":31,"vulnerabilities":32,"developer":49,"crawl_stats":38,"alternatives":56,"analysis":152,"fingerprints":625},"ultimate-watermark","Ultimate Watermark – Protect Images with Professional Watermarks","2.0.4","MantraBrain","https:\u002F\u002Fprofiles.wordpress.org\u002Fmantrabrain\u002F","\u003Cp>\u003Cstrong>Ultimate Watermark\u003C\u002Fstrong> is the complete WordPress image protection solution trusted by photographers, e-commerce stores, and content creators worldwide. Automatically add professional watermarks to protect your images from unauthorized use while maintaining complete control over positioning, opacity, and appearance.\u003C\u002Fp>\n\u003Ch4>🚀 Why Choose Ultimate Watermark?\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Protect Your Visual Content\u003C\u002Fstrong> – Whether you’re a professional photographer protecting your portfolio, an online store branding product images, or a blogger safeguarding your content, Ultimate Watermark provides enterprise-level protection with an easy-to-use interface.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Automatic & Effortless\u003C\u002Fstrong> – Watermarks are applied automatically as images are uploaded to your WordPress media library. No manual work required – just upload and your images are instantly protected.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Non-Destructive with Backups\u003C\u002Fstrong> – Original images are safely backed up before watermarking, allowing you to remove watermarks and restore originals anytime without quality loss.\u003C\u002Fp>\n\u003Ch4>🔗 Important Links\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fmantrabrain.com\u002Fplugins\u002Fultimate-watermark#pricing\" rel=\"nofollow ugc\">Try Pro Version\u003C\u002Fa>\u003C\u002Fstrong> – Upgrade to unlock unlimited watermarks and advanced features\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fmantrabrain.com\u002Fplugins\u002Fultimate-watermark\" rel=\"nofollow ugc\">Plugin Homepage\u003C\u002Fa>\u003C\u002Fstrong> – Official landing page with features and demos\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fultimate-watermark\u002F\" rel=\"ugc\">Get Support\u003C\u002Fa>\u003C\u002Fstrong> – Free community support forum\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fmantrabrain.com\u002Fcontact\" rel=\"nofollow ugc\">Feature Requests\u003C\u002Fa>\u003C\u002Fstrong> – Suggest new features and improvements\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>📺 Video Walkthrough\u003C\u002Fh4>\n\u003Cp>Watch this quick video tutorial to see Ultimate Watermark in action and learn how to protect your images in minutes:\u003C\u002Fp>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F6QcDWgtaJRU?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch4>⭐ Key Features (Free Version)\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>🖼️ Flexible Watermark Types\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Image Watermarks\u003C\u002Fstrong> – Upload your logo, signature, or custom watermark image\u003Cbr \u002F>\n* \u003Cstrong>Text Watermarks\u003C\u002Fstrong> – Add copyright text, website URL, or custom messages\u003Cbr \u002F>\n* \u003Cstrong>Unlimited Combinations\u003C\u002Fstrong> – Mix and match watermark styles for different purposes\u003Cbr \u002F>\n* \u003Cstrong>PNG Transparency Support\u003C\u002Fstrong> – Professional watermarks with transparent backgrounds\u003C\u002Fp>\n\u003Cp>\u003Cstrong>⚙️ Advanced Watermark Control\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Automatic Application\u003C\u002Fstrong> – Watermarks applied instantly on image upload\u003Cbr \u002F>\n* \u003Cstrong>Manual Watermarking\u003C\u002Fstrong> – Bulk watermark existing images in media library\u003Cbr \u002F>\n* \u003Cstrong>Size Control\u003C\u002Fstrong> – Original size, custom dimensions (pixels), or scaled percentage (1-100%)\u003Cbr \u002F>\n* \u003Cstrong>Opacity Adjustment\u003C\u002Fstrong> – Control transparency from 0% (invisible) to 100% (opaque)\u003Cbr \u002F>\n* \u003Cstrong>Quality Optimization\u003C\u002Fstrong> – Set output quality (1-100%) for optimal file sizes\u003C\u002Fp>\n\u003Cp>\u003Cstrong>📍 Precise Positioning\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>9-Position Grid\u003C\u002Fstrong> – Top\u002FMiddle\u002FBottom × Left\u002FCenter\u002FRight alignment\u003Cbr \u002F>\n* \u003Cstrong>Pixel-Perfect Offsets\u003C\u002Fstrong> – X and Y positioning with pixel or percentage units\u003Cbr \u002F>\n* \u003Cstrong>Preview System\u003C\u002Fstrong> – Real-time preview before applying watermarks\u003Cbr \u002F>\n* \u003Cstrong>Consistent Branding\u003C\u002Fstrong> – Same positioning across all watermarked images\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🎯 Smart Targeting\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Image Size Selection\u003C\u002Fstrong> – Watermark specific sizes (thumbnail, medium, large, full)\u003Cbr \u002F>\n* \u003Cstrong>Post Type Filtering\u003C\u002Fstrong> – Apply watermarks only to selected post types\u003Cbr \u002F>\n* \u003Cstrong>Conditional Rules\u003C\u002Fstrong> – Create rules for when watermarks should be applied\u003Cbr \u002F>\n* \u003Cstrong>Custom Image Sizes\u003C\u002Fstrong> – Support for theme and plugin custom image sizes\u003C\u002Fp>\n\u003Cp>\u003Cstrong>💾 Backup & Recovery\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Automatic Backups\u003C\u002Fstrong> – Original images backed up before watermarking\u003Cbr \u002F>\n* \u003Cstrong>Safe Removal\u003C\u002Fstrong> – Restore original images by removing watermarks\u003Cbr \u002F>\n* \u003Cstrong>Configurable Quality\u003C\u002Fstrong> – Set backup image quality to balance storage and preservation\u003Cbr \u002F>\n* \u003Cstrong>Bulk Operations\u003C\u002Fstrong> – Remove watermarks from multiple images at once\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🛡️ Image Protection\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Right-Click Disable\u003C\u002Fstrong> – Prevent image downloading via right-click\u003Cbr \u002F>\n* \u003Cstrong>Drag & Drop Prevention\u003C\u002Fstrong> – Stop users from dragging images to desktop\u003Cbr \u002F>\n* \u003Cstrong>User-Level Controls\u003C\u002Fstrong> – Optional protection settings for logged-in users\u003Cbr \u002F>\n* \u003Cstrong>Multi-Layer Security\u003C\u002Fstrong> – Combine watermarks with protection features\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🔧 Technical Excellence\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Dual Library Support\u003C\u002Fstrong> – Works with GD and ImageMagick for maximum compatibility\u003Cbr \u002F>\n* \u003Cstrong>WordPress 6.8 Ready\u003C\u002Fstrong> – Fully tested with latest WordPress version\u003Cbr \u002F>\n* \u003Cstrong>PHP 8.4 Compatible\u003C\u002Fstrong> – Modern PHP support with no deprecation warnings\u003Cbr \u002F>\n* \u003Cstrong>Metadata Preservation\u003C\u002Fstrong> – Maintains EXIF and IPTC data\u003Cbr \u002F>\n* \u003Cstrong>Memory Optimized\u003C\u002Fstrong> – Efficient processing for large image libraries\u003Cbr \u002F>\n* \u003Cstrong>REST API Integration\u003C\u002Fstrong> – Programmatic watermarking support\u003C\u002Fp>\n\u003Ch4>🎨 Perfect For\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Photographers\u003C\u002Fstrong> – Protect portfolio images and client work\u003C\u002Fli>\n\u003Cli>\u003Cstrong>E-commerce Stores\u003C\u002Fstrong> – Brand product images and prevent theft\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bloggers & Content Creators\u003C\u002Fstrong> – Safeguard visual content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Digital Artists\u003C\u002Fstrong> – Add copyright protection to artwork\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Corporate Websites\u003C\u002Fstrong> – Maintain brand consistency across images\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Media Publishers\u003C\u002Fstrong> – Protect editorial and news images\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Online Portfolios\u003C\u002Fstrong> – Showcase work while preventing unauthorized use\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>🚀 Quick Start Guide\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Cstrong>Install & Activate\u003C\u002Fstrong> the plugin from WordPress admin\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Navigate to\u003C\u002Fstrong> Ultimate Watermark \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Add New Watermark\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Create Watermark\u003C\u002Fstrong> – Upload image or add text watermark\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Configure Position\u003C\u002Fstrong> – Choose alignment and offset\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Enable Automatic\u003C\u002Fstrong> – Turn on automatic watermarking\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Upload Images\u003C\u002Fstrong> – New uploads are automatically watermarked!\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>💎 Pro Features – Upgrade for Advanced Capabilities\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fmantrabrain.com\u002Fplugins\u002Fultimate-watermark#pricing\" rel=\"nofollow ugc\">Upgrade to Ultimate Watermark Pro\u003C\u002Fa>\u003C\u002Fstrong> for powerful features:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🎯 Unlimited Watermarks\u003C\u002Fstrong>\u003Cbr \u002F>\n* Create unlimited watermark templates (Free: 1 watermark limit)\u003Cbr \u002F>\n* Different watermarks for different purposes\u003Cbr \u002F>\n* A\u002FB test watermark effectiveness\u003Cbr \u002F>\n* Seasonal and campaign-specific watermarks\u003C\u002Fp>\n\u003Cp>\u003Cstrong>📝 Dynamic Content Placeholders\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>EXIF Data\u003C\u002Fstrong> – Camera model, lens, ISO, aperture, shutter speed\u003Cbr \u002F>\n* \u003Cstrong>Date & Time\u003C\u002Fstrong> – Upload date, current date, custom formats\u003Cbr \u002F>\n* \u003Cstrong>User Information\u003C\u002Fstrong> – Author name, username, user ID\u003Cbr \u002F>\n* \u003Cstrong>Post Data\u003C\u002Fstrong> – Post title, category, tags, custom fields\u003Cbr \u002F>\n* \u003Cstrong>Site Information\u003C\u002Fstrong> – Site name, URL, tagline\u003Cbr \u002F>\n* \u003Cstrong>Custom Variables\u003C\u002Fstrong> – Create your own dynamic placeholders\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🛒 WooCommerce Integration\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Per-Product Watermarks\u003C\u002Fstrong> – Different watermarks for different products\u003Cbr \u002F>\n* \u003Cstrong>Category-Based Watermarks\u003C\u002Fstrong> – Auto-apply based on product category\u003Cbr \u002F>\n* \u003Cstrong>Bulk Operations\u003C\u002Fstrong> – Watermark all product images at once\u003Cbr \u002F>\n* \u003Cstrong>Priority Cascade\u003C\u002Fstrong> – Product \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Category \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Default watermark logic\u003Cbr \u002F>\n* \u003Cstrong>Variation Support\u003C\u002Fstrong> – Watermark product variation images\u003C\u002Fp>\n\u003Cp>\u003Cstrong>👁️ On-the-Fly Display\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Non-Destructive\u003C\u002Fstrong> – Show watermarks without modifying originals\u003Cbr \u002F>\n* \u003Cstrong>Role-Based Bypass\u003C\u002Fstrong> – Hide watermarks for admins\u002Flogged-in users\u003Cbr \u002F>\n* \u003Cstrong>Performance Optimized\u003C\u002Fstrong> – Cached watermark generation\u003Cbr \u002F>\n* \u003Cstrong>Selective Display\u003C\u002Fstrong> – Choose where watermarks appear (frontend\u002Fbackend)\u003Cbr \u002F>\n* \u003Cstrong>Dynamic Switching\u003C\u002Fstrong> – Different watermarks for different contexts\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🎯 Advanced Features\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Frontend Watermarking\u003C\u002Fstrong> – Watermark user-uploaded images\u003Cbr \u002F>\n* \u003Cstrong>Conditional Logic\u003C\u002Fstrong> – Complex rules for watermark application\u003Cbr \u002F>\n* \u003Cstrong>Batch Processing\u003C\u002Fstrong> – Schedule large watermarking jobs\u003Cbr \u002F>\n* \u003Cstrong>API Access\u003C\u002Fstrong> – Programmatic watermark control\u003Cbr \u002F>\n* \u003Cstrong>Custom Hooks\u003C\u002Fstrong> – Extend functionality with WordPress filters\u002Factions\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🆘 Priority Support\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Fast Response Times\u003C\u002Fstrong> – Get help when you need it\u003Cbr \u002F>\n* \u003Cstrong>Email Support\u003C\u002Fstrong> – Direct access to our expert team\u003Cbr \u002F>\n* \u003Cstrong>Automatic Updates\u003C\u002Fstrong> – Stay current with latest features\u003Cbr \u002F>\n* \u003Cstrong>Documentation Access\u003C\u002Fstrong> – Comprehensive guides and tutorials\u003Cbr \u002F>\n* \u003Cstrong>14-Day Money-Back Guarantee\u003C\u002Fstrong> – Risk-free purchase\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fmantrabrain.com\u002Fplugins\u002Fultimate-watermark#pricing\" rel=\"nofollow ugc\">Get Pro Now \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch4>🌐 Links & Resources\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fmantrabrain.com\u002Fplugins\u002Fultimate-watermark\" rel=\"nofollow ugc\">Official Website\u003C\u002Fa>\u003C\u002Fstrong> – Plugin homepage\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fmantrabrain.com\u002Fdocs\u002Fultimate-watermark\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa>\u003C\u002Fstrong> – Complete guides\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fultimate-watermark\u002F\" rel=\"ugc\">Support Forum\u003C\u002Fa>\u003C\u002Fstrong> – Free community support\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fmantrabrain.com\u002Fplugins\u002Fultimate-watermark#pricing\" rel=\"nofollow ugc\">Pro Version\u003C\u002Fa>\u003C\u002Fstrong> – Upgrade to Pro\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fmantrabrain.com\u002Fplugins\u002Fultimate-watermark\u002Fchangelog\" rel=\"nofollow ugc\">Changelog\u003C\u002Fa>\u003C\u002Fstrong> – Version history\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fmantrabrain.com\u002Fsupport\" rel=\"nofollow ugc\">Feature Requests\u003C\u002Fa>\u003C\u002Fstrong> – Suggest new features\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>🔧 System Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WordPress 5.0 or higher\u003C\u002Fli>\n\u003Cli>PHP 7.4 or higher (PHP 8.4 supported)\u003C\u002Fli>\n\u003Cli>GD Library OR ImageMagick extension\u003C\u002Fli>\n\u003Cli>Sufficient server memory for image processing (256MB+ recommended)\u003C\u002Fli>\n\u003Cli>Write permissions for WordPress uploads directory\u003C\u002Fli>\n\u003C\u002Ful>\n","Automatically protect your images with professional watermarks. Add text or image watermarks to WordPress media uploads with advanced positioning and  &hellip;",1000,23822,66,11,"2026-02-26T05:52:00.000Z","6.9.4","5.0","7.4",[20,21,22,23,24],"bulk-watermark","copyright","image-protection","photo-watermark","watermark","https:\u002F\u002Fmantrabrain.com\u002Fultimate-watermark","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fultimate-watermark.2.0.4.zip",99,1,0,"2025-09-22 00:00:00","2026-03-15T15:16:48.613Z",[33],{"id":34,"url_slug":35,"title":36,"description":37,"plugin_slug":4,"theme_slug":38,"affected_versions":39,"patched_in_version":40,"severity":41,"cvss_score":42,"cvss_vector":43,"vuln_type":44,"published_date":30,"updated_date":45,"references":46,"days_to_patch":48},"CVE-2025-57985","ultimate-watermark-missing-authorization","Ultimate Watermark \u003C= 1.1 - Missing Authorization","The Ultimate Watermark plugin for WordPress is vulnerable to unauthorized access due to a missing capability check on a function in versions up to, and including, 1.1. This makes it possible for authenticated attackers, with subscriber-level access and above, to perform an unauthorized action.",null,"\u003C=1.1","1.1.1","medium",5.4,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:U\u002FC:L\u002FI:L\u002FA:N","Missing Authorization","2025-10-08 20:58:40",[47],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Ff3d243fe-062c-4f46-aa85-cb7662a7615a?source=api-prod",17,{"slug":50,"display_name":7,"profile_url":8,"plugin_count":14,"total_installs":51,"avg_security_score":52,"avg_patch_time_days":53,"trust_score":54,"computed_at":55},"mantrabrain",8930,98,88,87,"2026-04-04T06:47:32.368Z",[57,78,95,113,132],{"slug":58,"name":59,"version":60,"author":61,"author_profile":62,"description":63,"short_description":64,"active_installs":65,"downloaded":66,"rating":67,"num_ratings":14,"last_updated":68,"tested_up_to":16,"requires_at_least":69,"requires_php":70,"tags":71,"homepage":75,"download_link":76,"security_score":27,"vuln_count":28,"unpatched_count":29,"last_vuln_date":77,"fetched_at":31},"watermark-reloaded","Watermark RELOADED","1.4.0","sverde1","https:\u002F\u002Fprofiles.wordpress.org\u002Fsverde1\u002F","\u003Cp>\u003Cstrong>Watermark RELOADED\u003C\u002Fstrong> is a lightweight WordPress image watermark plugin that automatically adds a customizable text watermark to images when you upload them to your Media Library.\u003C\u002Fp>\n\u003Cp>Use it to:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Protect your work from \u003Cstrong>unauthorized reuse\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Brand images with your \u003Cstrong>site name\u003C\u002Fstrong>, \u003Cstrong>URL\u003C\u002Fstrong>, or \u003Cstrong>copyright notice\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Keep control of your visual content with a simple, set-and-forget solution\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>You can:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Choose which image sizes to watermark: \u003Cstrong>thumbnail\u003C\u002Fstrong>, \u003Cstrong>medium\u003C\u002Fstrong>, \u003Cstrong>large\u003C\u002Fstrong>, \u003Cstrong>full size\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Customize text watermark \u003Cstrong>font\u003C\u002Fstrong> and \u003Cstrong>color\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Precisely control watermark \u003Cstrong>position\u003C\u002Fstrong> (corners, edges or centered) on the image\u003C\u002Fli>\n\u003Cli>Preview your watermark before saving settings so you know exactly how it will look\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The plugin adds:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>A dedicated \u003Cstrong>Watermark RELOADED settings page\u003C\u002Fstrong> where you configure your watermark and see a live preview\u003C\u002Fli>\n\u003Cli>A \u003Cstrong>WordPress Dashboard widget\u003C\u002Fstrong> that shows your current watermark settings and a preview of the watermark directly on the main Dashboard screen\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Key Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Automatic watermark on upload\u003C\u002Fstrong> – newly uploaded images are watermarked immediately\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Text watermarking\u003C\u002Fstrong> – add copyright text, site name or any custom message\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom fonts\u003C\u002Fstrong> – upload your own TTF fonts to use for the watermark\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Color picker integration\u003C\u002Fstrong> – choose any text color for your watermark\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Per-size control\u003C\u002Fstrong> – enable watermarking only on selected image sizes\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Live settings preview\u003C\u002Fstrong> – see how your watermark text, color and position look in the plugin settings before they are applied to new uploads\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Dashboard widget\u003C\u002Fstrong> – quickly review enabled sizes, position, offset and a preview from the WordPress Dashboard\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Simple, focused UI\u003C\u002Fstrong> – no unnecessary settings, just what you need to protect your images\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How it works\u003C\u002Fh3>\n\u003Col>\n\u003Cli>You configure your watermark text, font, color, and position in \u003Cstrong>Settings \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Watermark Reloaded\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>You choose which image sizes should receive the watermark.\u003C\u002Fli>\n\u003Cli>When you upload a new image through the \u003Cstrong>Media Library\u003C\u002Fstrong> or post editor, Watermark RELOADED automatically applies the text watermark to the selected sizes.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Existing images in your Media Library are \u003Cstrong>not modified\u003C\u002Fstrong> – only new uploads are processed.\u003C\u002Fp>\n\u003Ch3>Requirements\u003C\u002Fh3>\n\u003Cp>To generate watermarks, your server must support:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>PHP 5.3+\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>GD extension for PHP\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>FreeType Library\u003C\u002Fstrong> (for rendering text)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>If any of these are missing, the plugin will show an error message so you can contact your hosting provider.\u003C\u002Fp>\n\u003Ch3>Planned improvements\u003C\u002Fh3>\n\u003Cp>The following ideas are on the to-do list and may be implemented in future updates:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Additional bug fixes and compatibility adjustments\u003C\u002Fli>\n\u003Cli>Smarter handling of small images where the watermark might overflow\u003C\u002Fli>\n\u003Cli>Support for watermarking additional custom image sizes added by other plugins\u002Fthemes\u003C\u002Fli>\n\u003Cli>Image-size aware watermarks and more flexible positioning options\u003C\u002Fli>\n\u003C\u002Ful>\n","Automatically add customizable text watermarks to new images on upload to protect your WordPress media library.",800,169517,56,"2025-12-02T10:04:00.000Z","3.5","5.3",[72,22,73,74,24],"copyright-protection","image-watermark","text-watermark","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwatermark-reloaded.1.4.0.zip","2024-02-26 00:00:00",{"slug":79,"name":80,"version":81,"author":82,"author_profile":83,"description":84,"short_description":85,"active_installs":29,"downloaded":86,"rating":29,"num_ratings":29,"last_updated":87,"tested_up_to":16,"requires_at_least":17,"requires_php":88,"tags":89,"homepage":92,"download_link":93,"security_score":94,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"geotrixe-content-protector-watermarker","Geotrixe Content Protector & Image Watermarker","1.0.0","geotrixe","https:\u002F\u002Fprofiles.wordpress.org\u002Fgeotrixe\u002F","\u003Cp>Geotrixe Content Protector & Image Watermarker is a comprehensive WordPress plugin designed to help protect your website content from unauthorized copying and theft. The plugin provides multiple layers of protection to safeguard your text and images.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Disable Right-Click\u003C\u002Fstrong>: Prevents users from accessing the context menu on your website\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Disable Text Selection\u003C\u002Fstrong>: Makes it difficult for users to select and copy text content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Disable Copy\u002FPaste Shortcuts\u003C\u002Fstrong>: Blocks common keyboard shortcuts (Ctrl+C, Ctrl+V, etc.)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Customizable Popup Messages\u003C\u002Fstrong>: Display custom warning messages when users attempt to copy content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Per-Post\u002FPage Exclusions\u003C\u002Fstrong>: Exclude specific posts or pages from protection if needed\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Image Watermarking\u003C\u002Fstrong>: Automatically add watermarks to uploaded images to protect your visual content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Watermark Customization\u003C\u002Fstrong>: Choose watermark position (top-left, center, bottom-right) and use custom watermark images or text\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User-Friendly Settings\u003C\u002Fstrong>: Easy-to-use admin interface with tabbed settings pages\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How It Works\u003C\u002Fh4>\n\u003Cp>The plugin uses JavaScript to disable common content copying methods on the frontend of your website. For images, it automatically applies watermarks when images are uploaded to your Media Library using either Imagick (preferred) or GD library. You can customize all protection settings from the WordPress admin panel.\u003C\u002Fp>\n\u003Ch4>Use Cases\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Bloggers and content creators who want to protect their original content\u003C\u002Fli>\n\u003Cli>Photographers and artists who need to watermark their images\u003C\u002Fli>\n\u003Cli>Business websites with proprietary information\u003C\u002Fli>\n\u003Cli>Educational sites that want to prevent easy copying of course materials\u003C\u002Fli>\n\u003Cli>Any website owner concerned about content theft\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Important Notes\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>This plugin provides basic protection against casual copying but cannot prevent determined users from accessing your content\u003C\u002Fli>\n\u003Cli>Some protection features may affect user experience – use the per-post exclusion feature for pages where users need to copy content\u003C\u002Fli>\n\u003Cli>Image watermarks are applied during upload and cannot be removed without re-uploading the image\u003C\u002Fli>\n\u003C\u002Ful>\n","Protect your WordPress content by disabling right-click, text selection, copy\u002Fpaste shortcuts, and image dragging. Includes image watermarking.",126,"2025-12-11T14:38:00.000Z","7.2",[90,21,22,91,24],"content-protection","security","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fgeotrixe-content-protector-watermarker","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgeotrixe-content-protector-watermarker.1.0.0.zip",100,{"slug":96,"name":97,"version":98,"author":99,"author_profile":100,"description":101,"short_description":102,"active_installs":29,"downloaded":103,"rating":29,"num_ratings":29,"last_updated":104,"tested_up_to":105,"requires_at_least":106,"requires_php":107,"tags":108,"homepage":111,"download_link":112,"security_score":94,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"watermark-manager","Watermark Manager","3.1.0","labanthegreat","https:\u002F\u002Fprofiles.wordpress.org\u002Flabanthegreat\u002F","\u003Cp>Watermark Manager adds text or image watermarks to your WordPress media uploads. It supports single-image and batch operations, reusable templates, automatic backup of originals, and a full WP-CLI interface.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Text watermarks with configurable font size, colour, and opacity\u003C\u002Fli>\n\u003Cli>Image watermarks scaled relative to the target image\u003C\u002Fli>\n\u003Cli>Five position options: top-left, top-right, center, bottom-left, bottom-right\u003C\u002Fli>\n\u003Cli>Tiling mode to repeat the watermark across the entire image\u003C\u002Fli>\n\u003Cli>Rotation for both text and image watermarks\u003C\u002Fli>\n\u003Cli>Auto-apply watermarks on upload\u003C\u002Fli>\n\u003Cli>Batch processing with date range and dimension filtering\u003C\u002Fli>\n\u003Cli>Dry-run mode to preview batch operations before applying\u003C\u002Fli>\n\u003Cli>Reusable watermark templates (saved as a custom post type)\u003C\u002Fli>\n\u003Cli>Backup and restore of original images\u003C\u002Fli>\n\u003Cli>Daily cron cleanup of old backups with configurable retention\u003C\u002Fli>\n\u003Cli>Per-image watermark controls on the attachment edit screen\u003C\u002Fli>\n\u003Cli>Import and export settings as JSON\u003C\u002Fli>\n\u003Cli>Activity log tracking all watermark operations\u003C\u002Fli>\n\u003Cli>JPEG EXIF\u002FIPTC metadata preservation\u003C\u002Fli>\n\u003Cli>Optional WebP output conversion\u003C\u002Fli>\n\u003Cli>Minimum image size threshold to skip small images\u003C\u002Fli>\n\u003Cli>WP-CLI commands for all operations\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WordPress 6.0 or higher\u003C\u002Fli>\n\u003Cli>PHP 8.0 or higher\u003C\u002Fli>\n\u003Cli>GD library with TrueType font support\u003C\u002Fli>\n\u003C\u002Ful>\n","Apply text or image watermarks to WordPress media uploads with batch processing, templates, and backup\u002Frestore.",406,"2026-03-12T19:00:00.000Z","6.7.5","6.0","8.0",[20,109,22,110,24],"image","media","https:\u002F\u002Flabanthegreat.com\u002Fplugins\u002Fwatermark-manager","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwatermark-manager.3.1.0.zip",{"slug":114,"name":115,"version":116,"author":117,"author_profile":118,"description":119,"short_description":120,"active_installs":121,"downloaded":122,"rating":53,"num_ratings":123,"last_updated":124,"tested_up_to":105,"requires_at_least":125,"requires_php":75,"tags":126,"homepage":129,"download_link":130,"security_score":131,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"wp-copyright-protection","WP-Copyright-Protection","1.9","Dave Ligthart","https:\u002F\u002Fprofiles.wordpress.org\u002Fdaveligthart-1\u002F","\u003Cp>A simple way to protect the content on your website.\u003C\u002Fp>\n\u003Cp>For most browsers:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>no text copy\u003C\u002Fli>\n\u003Cli>no image copy\u003C\u002Fli>\n\u003Cli>no screenshots\u003C\u002Fli>\n\u003Cli>no right clicks \u003C\u002Fli>\n\u003Cli>no iframe\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This plugin is clean and easy.\u003C\u002Fp>\n\u003Cp>A rating + review is appreciated.\u003C\u002Fp>\n","Simple copyright protection for your images and text.  No right click, no text selections, no screenshots.  A very lean and clean plugin.",6000,177019,21,"2025-02-23T00:34:00.000Z","2.3",[90,21,127,22,128],"disable-right-click","protection","https:\u002F\u002Fwordpress.com\u002Fplugins\u002Fwp-copyright-protection","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-copyright-protection.1.9.1.zip",92,{"slug":133,"name":134,"version":135,"author":136,"author_profile":137,"description":138,"short_description":139,"active_installs":140,"downloaded":141,"rating":142,"num_ratings":143,"last_updated":144,"tested_up_to":16,"requires_at_least":17,"requires_php":145,"tags":146,"homepage":150,"download_link":151,"security_score":94,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"product-watermark-for-woocommerce","Product Watermark for WooCommerce","1.3.9.2","BeRocket","https:\u002F\u002Fprofiles.wordpress.org\u002Fberocket\u002F","\u003Cp>Product Watermark for WooCommerce plugin allows you to add watermark to images that applied to products. These watermarks can be an image copyright symbol, company logo or text. You will need few clicks to apply a logo or a watermark on all your product images.\u003C\u002Fp>\n\u003Ch4>Features:\u003C\u002Fh4>\n\u003Cp>✅ Watermark for product images\u003Cbr \u002F>\n✅ Custom watermark position\u003Cbr \u002F>\n✅ Watermarks with transparency is supported\u003Cbr \u002F>\n✅ Custom CSS for front end pages\u003C\u002Fp>\n\u003Ch4>Additional Features in Paid Plugin:\u003C\u002Fh4>\n\u003Cp>✅ Custom watermark size\u003Cbr \u002F>\n✅ Different watermarks for different image type\u003Cbr \u002F>\n✅ Save aspect ratio for watermarks\u003Cbr \u002F>\n✅ From 1 to 5 watermarks\u003Cbr \u002F>\n✅ Place text to images\u003Cbr \u002F>\n✅ Options to set text color, size and transparency\u003C\u002Fp>\n\u003Ch4>Plugin Links:\u003C\u002Fh4>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fberocket.com\u002Fwoocommerce-products-image-watermark\u002F?utm_source=wordpress_org&utm_medium=plugin_links&utm_campaign=image_watermark\" rel=\"nofollow ugc\">Paid Plugin\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fwoocommerce-currency-exchange.berocket.com\u002Fshop\u002F?utm_source=wordpress_org&utm_medium=plugin_links&utm_campaign=image_watermark\" rel=\"nofollow ugc\">Demo\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fdocs.berocket.com\u002Fplugin\u002Fwoocommerce-products-image-watermark?utm_source=wordpress_org&utm_medium=plugin_links&utm_campaign=image_watermark\" rel=\"nofollow ugc\">Docs\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>🍬 Wanna try admin side?\u003C\u002Fh4>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fberocket.com\u002Fwoocommerce-products-image-watermark\u002F?utm_source=wordpress_org&utm_medium=admin_demo&utm_campaign=image_watermark#try-admin\" rel=\"nofollow ugc\">Admin Demo\u003C\u002Fa> – Get access to this plugin’s admin and try it from inside. Change things and watch how they work.\u003C\u002Fp>\n\u003Ch4>Premium plugin video\u003C\u002Fh4>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FSrIhU35n0P0?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003Cbr \u002F>\n\u003Cem>we don’t have video with free plugin right now but we are working on it\u003C\u002Fem>\u003C\u002Fp>\n\u003Ch4>Compatibility with WooCommerce plugins\u003C\u002Fh4>\n\u003Cp>Product Watermark for WooCommerce has been tested and compatibility is certain with the following WooCommerce plugins that you can add to your site:\u003C\u002Fp>\n\u003Cp>🔸 \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoocommerce-ajax-filters\u002F\" rel=\"ugc\">\u003Cstrong>Advanced AJAX Product Filters\u003C\u002Fstrong>\u003C\u002Fa>\u003Cbr \u002F>\n🔸 \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fload-more-products-for-woocommerce\u002F\" rel=\"ugc\">\u003Cstrong>Load More Products for WooCommerce\u003C\u002Fstrong>\u003C\u002Fa>\u003Cbr \u002F>\n🔸 \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fgridlist-view-for-woocommerce\u002F\" rel=\"ugc\">\u003Cstrong>Grid\u002FList View for WooCommerce\u003C\u002Fstrong>\u003C\u002Fa>\u003Cbr \u002F>\n🔸 \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fproduct-preview-for-woocommerce\u002F\" rel=\"ugc\">\u003Cstrong>Product Preview for WooCommerce\u003C\u002Fstrong>\u003C\u002Fa>\u003Cbr \u002F>\n🔸 \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fproducts-compare-for-woocommerce\u002F\" rel=\"ugc\">\u003Cstrong>Products Compare for WooCommerce\u003C\u002Fstrong>\u003C\u002Fa>\u003Cbr \u002F>\n🔸 \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsales-report-for-woocommerce\u002F\" rel=\"ugc\">\u003Cstrong>Sales Report for WooCommerce\u003C\u002Fstrong>\u003C\u002Fa>\u003Cbr \u002F>\n🔸 \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwish-wait-list-for-woocommerce\u002F\" rel=\"ugc\">\u003Cstrong>Wishlist and Waitlist for WooCommerce\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fp>\n","Allows you to add watermark to images that applied to products",2000,94936,74,55,"2025-12-10T16:01:00.000Z","7.0",[23,147,148,149,24],"picture-watermark","product-image","product-watermark","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fproduct-watermark-for-woocommerce\u002F?utm_source=free_plugin&utm_medium=plugins&utm_campaign=image_watermark","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fproduct-watermark-for-woocommerce.1.3.9.2.zip",{"attackSurface":153,"codeSignals":394,"taintFlows":506,"riskAssessment":617,"analyzedAt":624},{"hooks":154,"ajaxHandlers":307,"restRoutes":390,"shortcodes":391,"cronEvents":392,"entryPointCount":178,"unprotectedCount":393},[155,161,165,169,173,179,183,186,190,193,196,198,202,204,207,211,216,220,224,228,231,235,239,243,247,253,255,258,262,266,269,271,274,278,281,283,287,290,293,296,300,303,306],{"type":156,"name":157,"callback":158,"file":159,"line":160},"action","admin_menu","addAdminMenu","src\\Admin\\AdminManager.php",62,{"type":156,"name":162,"callback":163,"file":159,"line":164},"admin_init","init",63,{"type":156,"name":166,"callback":167,"file":159,"line":168},"admin_enqueue_scripts","enqueueAdminAssets",64,{"type":156,"name":170,"callback":171,"file":159,"line":172},"admin_post_ultimate_watermark_save_settings","handleSettingsSave",65,{"type":156,"name":174,"callback":175,"priority":176,"file":177,"line":178},"attachment_fields_to_edit","addWatermarkFields",10,"src\\Admin\\MediaEditIntegration.php",22,{"type":156,"name":180,"callback":181,"priority":176,"file":177,"line":182},"add_meta_boxes","addWatermarkMetaBox",26,{"type":156,"name":184,"callback":181,"priority":176,"file":177,"line":185},"add_meta_boxes_attachment",27,{"type":156,"name":187,"callback":188,"file":177,"line":189},"current_screen","maybeAddMetaBoxOnScreen",30,{"type":156,"name":166,"callback":191,"file":177,"line":192},"enqueueScripts",36,{"type":156,"name":162,"callback":194,"file":195,"line":178},"addBulkActions","src\\Admin\\MediaLibraryIntegration.php",{"type":156,"name":166,"callback":191,"file":195,"line":197},23,{"type":156,"name":199,"callback":200,"file":195,"line":201},"post-upload-ui","addUploadToggle",29,{"type":156,"name":203,"callback":200,"file":195,"line":189},"upload-ui-top",{"type":156,"name":205,"callback":200,"file":195,"line":206},"wp_upload_tabs",31,{"type":156,"name":208,"callback":209,"priority":176,"file":195,"line":210},"wp_handle_upload","processUploadedImage",34,{"type":212,"name":213,"callback":214,"file":195,"line":215},"filter","wp_handle_upload_prefilter","processUploadedImagePrefilter",35,{"type":212,"name":217,"callback":218,"file":195,"line":219},"upload_post_params","addToggleToUploadParams",38,{"type":156,"name":221,"callback":222,"file":195,"line":223},"admin_footer","addUploadToggleScript",48,{"type":156,"name":221,"callback":225,"priority":226,"file":195,"line":227},"addUploadToggleToFooter",999,51,{"type":156,"name":221,"callback":229,"file":195,"line":230},"addConfirmationModal",54,{"type":156,"name":232,"callback":233,"file":195,"line":234},"delete_post","cleanupWatermarkUsage",57,{"type":156,"name":236,"callback":237,"file":195,"line":238},"delete_attachment","cleanupImageUsage",58,{"type":212,"name":240,"callback":241,"file":195,"line":242},"bulk_actions-upload","addWatermarkBulkActions",72,{"type":212,"name":244,"callback":245,"priority":176,"file":195,"line":246},"handle_bulk_actions-upload","handleWatermarkBulkAction",75,{"type":156,"name":248,"callback":249,"priority":250,"file":251,"line":252},"wp_enqueue_scripts","enqueueFrontendAssets",15,"src\\Assets\\AssetManager.php",94,{"type":156,"name":166,"callback":167,"priority":176,"file":251,"line":254},97,{"type":212,"name":256,"callback":257,"priority":176,"file":251,"line":94},"style_loader_tag","optimizeStyleLoading",{"type":212,"name":259,"callback":260,"priority":176,"file":251,"line":261},"script_loader_tag","optimizeScriptLoading",101,{"type":156,"name":166,"callback":263,"file":264,"line":265},"enqueueToastAssets","src\\Components\\Toast.php",24,{"type":156,"name":163,"callback":163,"priority":29,"file":267,"line":268},"src\\Core\\Plugin.php",125,{"type":156,"name":162,"callback":270,"priority":176,"file":267,"line":86},"adminInit",{"type":156,"name":248,"callback":272,"priority":176,"file":267,"line":273},"enqueueAssets",127,{"type":156,"name":275,"callback":276,"file":267,"line":277},"admin_notices","showMigrationNotice",130,{"type":156,"name":275,"callback":279,"file":267,"line":280},"closure",217,{"type":156,"name":275,"callback":279,"file":267,"line":282},304,{"type":156,"name":284,"callback":285,"file":286,"line":123},"add_attachment","markForWatermarking","src\\Integration\\RestApiIntegration.php",{"type":156,"name":288,"callback":289,"priority":176,"file":286,"line":265},"rest_insert_attachment","handleRestApiAttachmentUpload",{"type":156,"name":291,"callback":289,"priority":176,"file":286,"line":292},"rest_after_insert_attachment",25,{"type":156,"name":294,"callback":295,"priority":176,"file":286,"line":201},"wp_insert_post","handleAttachmentPostInsert",{"type":212,"name":297,"callback":298,"priority":176,"file":286,"line":299},"wp_generate_attachment_metadata","processAfterMetadataGeneration",32,{"type":156,"name":163,"callback":301,"file":302,"line":201},"registerPostType","src\\PostTypes\\WatermarkPostType.php",{"type":156,"name":304,"callback":279,"file":305,"line":67},"plugins_loaded","ultimate-watermark.php",{"type":156,"name":275,"callback":279,"file":305,"line":13},[308,314,318,322,326,330,333,337,340,344,347,350,353,357,361,364,367,370,374,377,381,386],{"action":309,"nopriv":310,"callback":311,"hasNonce":312,"hasCapCheck":312,"file":159,"line":313},"ultimate_watermark_delete_backup",false,"handleDeleteBackup",true,67,{"action":315,"nopriv":310,"callback":316,"hasNonce":312,"hasCapCheck":312,"file":159,"line":317},"ultimate_watermark_restore_backup","handleRestoreBackup",68,{"action":319,"nopriv":310,"callback":320,"hasNonce":312,"hasCapCheck":312,"file":159,"line":321},"ultimate_watermark_bulk_restore_backup","handleBulkRestoreBackup",69,{"action":323,"nopriv":310,"callback":324,"hasNonce":312,"hasCapCheck":312,"file":159,"line":325},"ultimate_watermark_bulk_delete_backup","handleBulkDeleteBackup",70,{"action":327,"nopriv":310,"callback":328,"hasNonce":312,"hasCapCheck":310,"file":159,"line":329},"ultimate_watermark_save_settings","handleSaveSettings",71,{"action":331,"nopriv":310,"callback":332,"hasNonce":312,"hasCapCheck":312,"file":159,"line":242},"ultimate_watermark_update_toggle_state","handleUpdateToggleState",{"action":334,"nopriv":310,"callback":335,"hasNonce":312,"hasCapCheck":312,"file":159,"line":336},"ultimate_watermark_get_analytics_data","handleGetAnalyticsData",73,{"action":338,"nopriv":310,"callback":339,"hasNonce":312,"hasCapCheck":312,"file":159,"line":142},"ultimate_watermark_get_paginated_backups","handleGetPaginatedBackups",{"action":341,"nopriv":310,"callback":342,"hasNonce":312,"hasCapCheck":312,"file":177,"line":343},"ultimate_watermark_remove_all","handleRemoveAllWatermarks",33,{"action":345,"nopriv":310,"callback":346,"hasNonce":312,"hasCapCheck":312,"file":195,"line":265},"ultimate_watermark_apply_manual","handleManualWatermarking",{"action":348,"nopriv":310,"callback":349,"hasNonce":312,"hasCapCheck":312,"file":195,"line":292},"ultimate_watermark_apply_automatic","handleAutomaticWatermarking",{"action":351,"nopriv":310,"callback":352,"hasNonce":312,"hasCapCheck":312,"file":195,"line":182},"ultimate_watermark_remove","handleRemoveWatermarking",{"action":354,"nopriv":310,"callback":355,"hasNonce":312,"hasCapCheck":310,"file":195,"line":356},"ultimate_watermark_set_temp_selected_ids","handleSetTempSelectedIds",41,{"action":358,"nopriv":310,"callback":359,"hasNonce":312,"hasCapCheck":312,"file":360,"line":265},"ultimate_watermark_duplicate","handleDuplicate","src\\Ajax\\WatermarkActionsHandler.php",{"action":362,"nopriv":310,"callback":363,"hasNonce":312,"hasCapCheck":312,"file":360,"line":292},"ultimate_watermark_delete","handleDelete",{"action":365,"nopriv":310,"callback":366,"hasNonce":312,"hasCapCheck":312,"file":360,"line":182},"ultimate_watermark_toggle","handleToggle",{"action":368,"nopriv":310,"callback":369,"hasNonce":312,"hasCapCheck":312,"file":360,"line":185},"ultimate_watermark_bulk_delete","handleBulkDelete",{"action":371,"nopriv":310,"callback":372,"hasNonce":310,"hasCapCheck":310,"file":360,"line":373},"ultimate_watermark_bulk_activate","handleBulkActivate",28,{"action":375,"nopriv":310,"callback":376,"hasNonce":310,"hasCapCheck":310,"file":360,"line":201},"ultimate_watermark_bulk_deactivate","handleBulkDeactivate",{"action":378,"nopriv":310,"callback":379,"hasNonce":310,"hasCapCheck":310,"file":380,"line":215},"ultimate_watermark_save","applyRateLimit","src\\Ajax\\WatermarkAjaxHandler.php",{"action":382,"nopriv":310,"callback":383,"hasNonce":312,"hasCapCheck":312,"file":384,"line":385},"ultimate_watermark_generate_preview","handleGeneratePreview","src\\Ajax\\WatermarkPreviewHandler.php",19,{"action":387,"nopriv":310,"callback":388,"hasNonce":312,"hasCapCheck":312,"file":384,"line":389},"ultimate_watermark_get_library_status","handleGetLibraryStatus",20,[],[],[],3,{"dangerousFunctions":395,"sqlUsage":396,"outputEscaping":399,"fileOperations":182,"externalRequests":29,"nonceChecks":178,"capabilityChecks":178,"bundledLibraries":505},[],{"prepared":397,"raw":29,"locations":398},44,[],{"escaped":400,"rawEcho":227,"locations":401},705,[402,405,407,409,411,413,415,417,419,422,424,427,429,431,433,436,438,439,440,442,443,444,446,447,449,451,453,455,457,459,461,463,465,467,469,471,473,475,477,479,481,483,485,487,489,492,494,496,498,500,503],{"file":403,"line":164,"context":404},"src\\Admin\\Components\\Header.php","raw output",{"file":406,"line":238,"context":404},"src\\Admin\\Components\\Layout.php",{"file":177,"line":408,"context":404},241,{"file":177,"line":410,"context":404},244,{"file":195,"line":412,"context":404},657,{"file":195,"line":414,"context":404},773,{"file":195,"line":416,"context":404},779,{"file":195,"line":418,"context":404},1847,{"file":420,"line":421,"context":404},"src\\Admin\\Pages\\AddWatermarkPage.php",116,{"file":420,"line":423,"context":404},1192,{"file":425,"line":426,"context":404},"src\\Admin\\Pages\\AnalyticsPage.php",235,{"file":425,"line":428,"context":404},236,{"file":425,"line":430,"context":404},491,{"file":425,"line":432,"context":404},534,{"file":434,"line":435,"context":404},"src\\Admin\\Pages\\BackupPage.php",52,{"file":434,"line":437,"context":404},53,{"file":434,"line":238,"context":404},{"file":434,"line":242,"context":404},{"file":434,"line":441,"context":404},82,{"file":434,"line":131,"context":404},{"file":434,"line":94,"context":404},{"file":434,"line":445,"context":404},102,{"file":434,"line":421,"context":404},{"file":434,"line":448,"context":404},120,{"file":434,"line":450,"context":404},131,{"file":434,"line":452,"context":404},135,{"file":434,"line":454,"context":404},147,{"file":434,"line":456,"context":404},148,{"file":434,"line":458,"context":404},149,{"file":434,"line":460,"context":404},150,{"file":434,"line":462,"context":404},158,{"file":434,"line":464,"context":404},173,{"file":434,"line":466,"context":404},177,{"file":434,"line":468,"context":404},190,{"file":434,"line":470,"context":404},191,{"file":434,"line":472,"context":404},194,{"file":434,"line":474,"context":404},263,{"file":434,"line":476,"context":404},279,{"file":434,"line":478,"context":404},280,{"file":434,"line":480,"context":404},288,{"file":434,"line":482,"context":404},296,{"file":434,"line":484,"context":404},299,{"file":434,"line":486,"context":404},302,{"file":434,"line":488,"context":404},305,{"file":490,"line":491,"context":404},"src\\Admin\\Pages\\DashboardPage.php",266,{"file":490,"line":493,"context":404},368,{"file":490,"line":495,"context":404},465,{"file":490,"line":497,"context":404},502,{"file":499,"line":282,"context":404},"src\\Admin\\Pages\\SettingsPage.php",{"file":501,"line":502,"context":404},"src\\Admin\\Pages\\WatermarkPage.php",292,{"file":501,"line":504,"context":404},321,[],[507,525,533,544,554,570,578,588,597,609],{"entryPoint":508,"graph":509,"unsanitizedCount":29,"severity":524},"handleUpdateToggleState (src\\Admin\\AdminManager.php:669)",{"nodes":510,"edges":522},[511,516],{"id":512,"type":513,"label":514,"file":159,"line":515},"n0","source","$_POST",683,{"id":517,"type":518,"label":519,"file":159,"line":520,"wp_function":521},"n1","sink","update_option() [Settings Manipulation]",689,"update_option",[523],{"from":512,"to":517,"sanitized":312},"low",{"entryPoint":526,"graph":527,"unsanitizedCount":29,"severity":524},"\u003CAdminManager> (src\\Admin\\AdminManager.php:0)",{"nodes":528,"edges":531},[529,530],{"id":512,"type":513,"label":514,"file":159,"line":515},{"id":517,"type":518,"label":519,"file":159,"line":520,"wp_function":521},[532],{"from":512,"to":517,"sanitized":312},{"entryPoint":534,"graph":535,"unsanitizedCount":29,"severity":524},"\u003CMediaEditIntegration> (src\\Admin\\MediaEditIntegration.php:0)",{"nodes":536,"edges":542},[537,539],{"id":512,"type":513,"label":538,"file":177,"line":13},"$_GET",{"id":517,"type":518,"label":540,"file":177,"line":410,"wp_function":541},"echo() [XSS]","echo",[543],{"from":512,"to":517,"sanitized":312},{"entryPoint":545,"graph":546,"unsanitizedCount":29,"severity":524},"handleSetTempSelectedIds (src\\Admin\\MediaLibraryIntegration.php:1409)",{"nodes":547,"edges":552},[548,550],{"id":512,"type":513,"label":514,"file":195,"line":549},1418,{"id":517,"type":518,"label":519,"file":195,"line":551,"wp_function":521},1420,[553],{"from":512,"to":517,"sanitized":312},{"entryPoint":555,"graph":556,"unsanitizedCount":29,"severity":524},"\u003CMediaLibraryIntegration> (src\\Admin\\MediaLibraryIntegration.php:0)",{"nodes":557,"edges":567},[558,561,563,565],{"id":512,"type":513,"label":559,"file":195,"line":560},"$_POST (x3)",466,{"id":517,"type":518,"label":540,"file":195,"line":562,"wp_function":541},649,{"id":564,"type":513,"label":514,"file":195,"line":549},"n2",{"id":566,"type":518,"label":519,"file":195,"line":551,"wp_function":521},"n3",[568,569],{"from":512,"to":517,"sanitized":312},{"from":564,"to":566,"sanitized":312},{"entryPoint":571,"graph":572,"unsanitizedCount":29,"severity":524},"renderAddWatermarkContent (src\\Admin\\Pages\\AddWatermarkPage.php:85)",{"nodes":573,"edges":576},[574,575],{"id":512,"type":513,"label":538,"file":420,"line":54},{"id":517,"type":518,"label":540,"file":420,"line":261,"wp_function":541},[577],{"from":512,"to":517,"sanitized":312},{"entryPoint":579,"graph":580,"unsanitizedCount":29,"severity":524},"renderFormTabs (src\\Admin\\Pages\\AddWatermarkPage.php:178)",{"nodes":581,"edges":586},[582,584],{"id":512,"type":513,"label":538,"file":420,"line":583},183,{"id":517,"type":518,"label":540,"file":420,"line":585,"wp_function":541},192,[587],{"from":512,"to":517,"sanitized":312},{"entryPoint":589,"graph":590,"unsanitizedCount":29,"severity":524},"\u003CAddWatermarkPage> (src\\Admin\\Pages\\AddWatermarkPage.php:0)",{"nodes":591,"edges":595},[592,594],{"id":512,"type":513,"label":593,"file":420,"line":54},"$_GET (x2)",{"id":517,"type":518,"label":540,"file":420,"line":261,"wp_function":541},[596],{"from":512,"to":517,"sanitized":312},{"entryPoint":598,"graph":599,"unsanitizedCount":29,"severity":524},"handleToggle (src\\Ajax\\WatermarkActionsHandler.php:197)",{"nodes":600,"edges":607},[601,603],{"id":512,"type":513,"label":514,"file":360,"line":602},211,{"id":517,"type":518,"label":604,"file":360,"line":605,"wp_function":606},"get_var() [SQLi]",242,"get_var",[608],{"from":512,"to":517,"sanitized":312},{"entryPoint":610,"graph":611,"unsanitizedCount":29,"severity":524},"\u003CWatermarkActionsHandler> (src\\Ajax\\WatermarkActionsHandler.php:0)",{"nodes":612,"edges":615},[613,614],{"id":512,"type":513,"label":514,"file":360,"line":602},{"id":517,"type":518,"label":604,"file":360,"line":605,"wp_function":606},[616],{"from":512,"to":517,"sanitized":312},{"summary":618,"deductions":619},"The 'ultimate-watermark' v2.0.4 plugin exhibits a generally good security posture with several strengths. The plugin demonstrates excellent practice by using prepared statements for all SQL queries and properly escaping a high percentage of its output.  The absence of dangerous functions, external HTTP requests, and critical or high-severity taint flows is also commendable.  Furthermore, the plugin utilizes nonces and capability checks for all its AJAX handlers, which is a crucial security measure.\n\nHowever, there are notable concerns regarding the attack surface.  The plugin exposes 22 AJAX handlers, and a significant portion (3 of them) lack proper authentication checks. This creates a potential entry point for unauthenticated attackers to interact with the plugin in unintended ways, potentially leading to unintended actions or information disclosure if these handlers perform sensitive operations.  While there are no currently unpatched vulnerabilities, the history indicates a past medium-severity vulnerability, specifically related to missing authorization. This pattern suggests a recurring need for careful review of authorization mechanisms, especially within the AJAX endpoints.\n\nIn conclusion, while the plugin has strong foundational security practices in place, the presence of unprotected AJAX handlers represents a clear risk that needs immediate attention. Addressing these unauthenticated entry points is paramount to improving the overall security of the 'ultimate-watermark' plugin.",[620,622],{"reason":621,"points":176},"AJAX handlers without authentication checks",{"reason":623,"points":176},"Past medium severity vulnerability (Missing Authorization)","2026-03-16T19:04:58.138Z",{"wat":626,"direct":642},{"assetPaths":627,"generatorPatterns":632,"scriptPaths":633,"versionParams":637},[628,629,630,631],"\u002Fwp-content\u002Fplugins\u002Fultimate-watermark\u002Fassets\u002Fcss\u002Fadmin-style.css","\u002Fwp-content\u002Fplugins\u002Fultimate-watermark\u002Fassets\u002Fcss\u002Ffrontend-style.css","\u002Fwp-content\u002Fplugins\u002Fultimate-watermark\u002Fassets\u002Fjs\u002Fadmin-script.js","\u002Fwp-content\u002Fplugins\u002Fultimate-watermark\u002Fassets\u002Fjs\u002Ffrontend-script.js",[],[634,635,636],"\u002Fwp-content\u002Fplugins\u002Fultimate-watermark\u002Fvendor\u002Fmoxiecode\u002Fplupload\u002Fjs\u002Fmoxie.js","\u002Fwp-content\u002Fplugins\u002Fultimate-watermark\u002Fvendor\u002Fmoxiecode\u002Fplupload\u002Fjs\u002Fplupload.min.js","\u002Fwp-content\u002Fplugins\u002Fultimate-watermark\u002Fvendor\u002Ftinymce\u002Ftinymce\u002Ftinymce.min.js",[638,639,640,641],"ultimate-watermark\u002Fassets\u002Fcss\u002Fadmin-style.css?ver=","ultimate-watermark\u002Fassets\u002Fcss\u002Ffrontend-style.css?ver=","ultimate-watermark\u002Fassets\u002Fjs\u002Fadmin-script.js?ver=","ultimate-watermark\u002Fassets\u002Fjs\u002Ffrontend-script.js?ver=",{"cssClasses":643,"htmlComments":650,"htmlAttributes":655,"restEndpoints":660,"jsGlobals":665,"shortcodeOutput":670},[644,645,646,647,648,649],"uw-admin-wrap","uw-dashboard-card","uw-settings-section","uw-media-library-item","uw-add-watermark-form","uw-analytics-chart",[651,652,653,654],"\u003C!-- Ultimate Watermark Admin Wrap -->","\u003C!-- Start: Add Watermark Form -->","\u003C!-- End: Add Watermark Form -->","\u003C!-- Ultimate Watermark Settings Section -->",[656,657,658,659],"data-uw-id","data-watermark-type","data-watermark-id","data-plugin-name=\"Ultimate Watermark\"",[661,662,663,664],"\u002Fwp-json\u002Fultimate-watermark\u002Fv1\u002Fsettings","\u002Fwp-json\u002Fultimate-watermark\u002Fv1\u002Fwatermarks","\u002Fwp-json\u002Fultimate-watermark\u002Fv1\u002Fanalytics","\u002Fwp-json\u002Fultimate-watermark\u002Fv1\u002Fbackups",[666,667,668,669],"window.UltimateWatermarkAdmin","var ultimateWatermarkData = ","window.UW = ","const uw_object_name = ",[671,672,673],"[ultimate_watermark_display_image]","[uw_image_watermark]","[ultimate_watermark_gallery]"]