Lösenordsskydda specifika URL:er (Wordpress/PHP)

Permalänk
Medlem

Lösenordsskydda specifika URL:er (Wordpress/PHP)

Jag har en Wordpress-sida med en custom post type som heter "downloads". Här kan man skapa en nedladdning som då har ett antal fält såsom titel, beskrivning, fil som ska gälla för nedladdningen, samt en krysslåda som avgör om filen ska vara lösenordsskyddad eller ej. Filen ligger då hostad under wp-content/uploads/X/X/<FILENS NAMN>.

I fallet att en besökare i sådana fall klickar på en lösenordsskyddad länk, så vill jag att besökaren hänvisas till en sida där man måste skriva ett lösenord för att få tillgång till filen. Detta skulle då vara frikopplat från Wordpress användare, så det är ett och samma lösenord som gäller för alla.

När man skrivit rätt lösenord så laddas filen ner och man hänvisas tillbaka till sidan där man klickade på länken initialt.

Jag försöker få ett hum om hur man gör detta på bästa sätt. Jag har en slags idé i mitt huvud och ville bara kolla med någon som är mer kunnig om detta låter vettigt eller ej:

• Ha någon form av nyckel som används för att kryptera/dekryptera
• Om en länk är lösenordsskyddad, skapa en URL som innehåller filens slutgiltiga URL fast krypterad, exempelvis: www.domän.com/password/<KRYPTERAD URL>?success=<URL FÖR SIDAN SOM JAG KLICKADE PÅ LÄNKEN>
• När användare klickar på länken, skicka vidare till URL ovan.
• Här möts användaren av ett formulär med ett fält för lösenord.
• När användaren skriver rätt lösenord i formuläret, skicka vidare till funktion som dekrypterar URL:en med hjälp av nyckel, skickar vidare användaren till URL:en för nedladdning, så att filen börjar laddas ner i webbläsaren, och skickar i samma ögonblick tillbaka användaren till ursprungliga URL:en man var på när man klickade på länken, med hjälp av "success"-parametern i URL:en.
• Om användaren skriver fel lösenord, visa error under fältet som förklarar att lösenordet är fel, eventuellt hänvisa till admin för förfrågan om lösenordet i fråga.

Låter detta som en vettig lösning eller hur skulle ni föreslå att man gör detta på bästa sätt?

Permalänk
Medlem

Finns egentligen 2 frågor som man ska ta ställning till beroende på nivå av säkerhet.

1. Ska filen krypteras på disken dvs i wp-contents/uploads så att det inte går att titta på filen utan lösenord admins etc inte kan se vad den innehåller.
2. Ska enbart download vara baserad på lösenord.

Borde vara rätt stright forward om man låter WP hantera nedladdningen, dvs enbart wordpress kan komma åt filerna.
Då skulle man kunna göra nått sånt här typ (gissar jag på).

Uppladdning:
När filen laddas upp så populeras en tabell i databasen som innehåller "filnamn","salt(uuid typ),"hash(salt+lösenord)".
Filen krypteras baserat på salt och lösenord.
Nedladdning:
När sedan någon vill ladda hem filen via WP så låter man WP fråga efter lösenord som hashas och jämnförs med det som finns i databasen.
Om lösenordet är korrekt så appliceras det på filen som sedan levereras.

Kommer säkert krävas lite PHP arbete i WP.

Visa signatur

Ei bor i stockholm och tar inget ansvar för allt som han säger
7900, 64 gig ram, radeon r290
Solna arbetscenter