=== Selective Image Guard | A deterrent for unauthorized downloads and scraping === Contributors: giuse Tags: image protection, anti-scraping, photography, content protection, security Requires at least: 5.0 Tested up to: 6.8 Requires PHP: 7.2 Stable tag: 1.0.8 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Protect your images from unauthorized downloads and scraping. == Description == **Selective Image Guard** is a lightweight WordPress plugin that adds multiple layers of protection to your website's images. It's ideal for photographers, designers, and content creators who want to deter theft and unauthorized use of their visual content. ### Key Features * **Desktop Screenshot Prevention**: Applies a blur filter to protected images when specific keyboard shortcuts for screenshots are detected. This is a deterrent, not a foolproof solution. * **Print Protection**: Blurs protected images when a user attempts to print the page. * **Selective Protection**: You control which images are protected. The plugin only affects images you mark as protected in the media library. ### How It Works 1. Navigate to your media library and select the image you want to protect. 2. Check the **"Protect this image"** option. 3. The plugin will automatically apply front-end protections to the selected image to help prevent unauthorized access. ### Don't understimate the value of a deterrent. This plugin provides a deterrent, not a foolproof solution. No client-side technique can offer 100% protection against a determined attacker. But don’t underestimate the value of a deterrent. Think about the methods used to keep mosquitoes away. Even if they don’t work 100%, would you rather be surrounded by hundreds of mosquitoes or just a couple? That’s the idea of a deterrent. --- == Frequently Asked Questions == = Will this plugin completely prevent image theft? = No. While this plugin provides strong deterrents, a determined user can still bypass them, for example, by taking a physical screenshot of the screen. However, these protections are highly effective at stopping most casual users and automated scrapers. But don’t underestimate the value of a deterrent. Think about the methods used to keep mosquitoes away. Even if they don’t work 100%, would you rather be surrounded by hundreds of mosquitoes or just a couple? That’s the idea of a deterrent. = Does this plugin affect all images on my site? = No. Only images that you explicitly mark as protected in the media library will be affected. = Does it work with a CDN? = The protected images will include the following headers: ` header( 'Expires: Thu, 01 Jan 1970 00:00:00 GMT' ); // Already expired header( 'Cache-Control: no-store, no-cache, must-revalidate, max-age=0' ); header( 'Cache-Control: post-check=0, pre-check=0', false ); // For Internet Explorer header( 'Pragma: no-cache' ); ` These headers instruct browsers and CDNs not to store the protected images in cache. In general, CDNs should respect these headers. If, for any reason, your CDN does not, you can exclude URLs containing /protect-image/ from being cached. If a CDN still caches the images despite these rules, the protection will not work. However, this would require two failures: the CDN ignoring the headers and the cache exclusion not taking effect. For this reason, CDNs should normally not be an issue. = Is JavaScript required for the main protections? = Yes. The key protections rely on JavaScript to detect user actions. However, the plugin will still provide a warning for users who have JavaScript disabled. = Will this affect my site's SEO? = The plugin may interfere with how protected images are indexed by search engines. This is why **Selective Image Guard** is designed to be selective—you can choose which images to protect, ensuring that other, unprotected images remain fully accessible to search engine crawlers. --- == Changelog == = 1.0.8 = * Fixed: missing images = 1.0.7 = * Fixed: prevent dragging = 1.0.6 = * Fixed: caching issues * Fixed: 404 errors = 1.0.5 = * Enhanced: image name replaced with image size slug in the URL for better security. = 1.0.4 = * Fixed: image sizes not taken. = 1.0.3 = * Fixed: spelling errors. = 1.0.2 = * Fixed: protected images not showing in some situations. = 1.0.1 = * Fixed: protected images not showing in the backend. = 1.0.0 = * Initial release. --- == Credits == Developed by [Jose Mortellaro](https://josemortellaro.com)