I am currently running a fairly popular private Wordpress site on a dedicated bare metal server using ISPConfig, Nginx and MariaDB. We have a series of podcasts and content that we host specific for our members. We are having an issue where certain users are sharing the site's links on other sites which is making our private content public. What I am looking to do is secure our content to prevent the links from working from the outside and to prevent this from happening again.
I have tried a few methods so far which has come up with it's own issues. My first attempt was to use Nginx's hotlink protection method by using the
valid_referer directive. While this method did work it created issues with some browsers and prevented members with RSS/Podcast readers from downloading content.
The second use was a Wordpress plugin which uses PHP, WP-DownloadManager. Again this method did work but once again causes issues with some browsers and devices and doesn't work with RSS/Podcast readers.
I've seen a few methods used on another private podcast was the use of a key-based method. I'm already using a key method to keep the actual RSS feed private but the actual media file is not. This method also puts a key on the media file's URL just like it does with the RSS feed, and the links expire after a set time. I believe this method would be basically killing two birds with one stone. First, it should prevent people from sharing the link and if people are dumb enough to do so potentially any traffic generated from said link could be identified and tied to a specific member.
Is there a way for this to happen and any code available? Is there any other method that might be better? I'm currently at a loss and my members, especially iOS users, are getting a little upset since I pulled the RSS feeds.
Right now I'm currently using Wordpress with the Blubrry PowerPress plugin for podcasts and a slightly modified version of the Private Feed Key plugin which protects the Wordpress RSS feed. Members are required to login to the site and is unavailable to guests.