Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Bestanden beveiligen met Nginx en Apache

Pagina: 1
Acties:

  • _PieterZ
  • Registratie: Juli 2012
  • Laatst online: 27-11 19:02
Hoi Tweakers,

Op een vps gebruik ik het control panel Vesta wie mijn websites afhandelt met Nginx en Apache. Juist die combinatie van die twee zorgen bij mij voor een klein probleempje/vraag;

Ik wil een aantal bestanden beveiligen voor directe toegang. Normaal gesproken doe ik dat met Apache dmv een htaccess bestand met de volgende regels;

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
RewriteRule \.(gif|jpg|svg|mp4|jpeg)$ - [F]


Echter moet ik nu dus dit werkend zien te krijgen in een nginx configuratie bestand. Het volgende heb ik daar staan;
location /video {
if ($http_referer !~ "^http://(www\.)?localhost"){
rewrite \.(gif|jpg|svg|mp4|jpeg)$ /- [F]; }
}


In een apache omgeving met een .htaccess kan ik dan zoals gewenst het bestand niet via de directe url benaderen, maar wel via de website zelf in de root directory met een img tag ter voorbeeld. Met nginx werkt het eerste wel, maar kan de website kan hem zelf nu ook niet meer benaderen.

Wie o wie kan mij uit de brand helpen?

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 16:17

BCC

Als je Apache voor je NGINX staat, dan is de referrer altijd localhost, mits je Apache zo instelt dat hij dat doorgeeft. Kan het zijn dat daar je issue zit?
Anders moet zoiets werken:
code:
1
2
3
4
valid_referers blocked www.example.com example.com;
 if ($invalid_referer) {
  rewrite ^/images/uploads.*\.(gif|jpg|jpeg|png)$ http://www.examples.com/banned.jpg last
 }


Zie http://nginx.org/en/docs/...odule.html#valid_referers
Zoek eens op Google met "NGINX prevent image deeplinking"

[ Voor 55% gewijzigd door BCC op 20-05-2016 14:19 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • _PieterZ
  • Registratie: Juli 2012
  • Laatst online: 27-11 19:02
Als ik het goed heb staat Nginx voor Apache.

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
_PieterZ schreef op vrijdag 20 mei 2016 @ 14:14:
Ik wil een aantal bestanden beveiligen voor directe toegang. Normaal gesproken doe ik dat met Apache dmv een htaccess bestand met de volgende regels;

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
RewriteRule \.(gif|jpg|svg|mp4|jpeg)$ - [F]
Never trust any input! Je moet dus ook nooit vertrouwen op de HTTP_REFERER, zie Wikipedia: Referer spoofing
Als je bestanden wil beveiligen moet je dat op een andere manier doen.

[ Voor 7% gewijzigd door DJMaze op 20-05-2016 14:29 . Reden: Link toegevoegd ]

Maak je niet druk, dat doet de compressor maar


  • _PieterZ
  • Registratie: Juli 2012
  • Laatst online: 27-11 19:02
DJMaze schreef op vrijdag 20 mei 2016 @ 14:27:
[...]

Never trust any input! Je moet dus nooit vertrouwen op de HTTP_REFERER, zie Wikipedia: Referer spoofing
Als je bestanden wil beveiligen moet je dat op een andere manier doen.
Thanks voor de tip. Klopt inderdaad dat het niet de beste manier is, maar wil het dus anders aanpakken. Heb je toevallig een suggestie?

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Er zijn zat mogelijkheden, de vraag is hoever wil je gaan?
  1. Je kan een cookie gebruiken die 1 jaar geldig is, of tot het einde van de browser sessie.
  2. Je kan een single-use token gebruiken zodat het maar N keer mag
  3. Je kan checken op ingelogde gebruiker/groep
  4. Je kan op remote IP basis beveiligen
  5. etc. etc. etc.

Maak je niet druk, dat doet de compressor maar


  • _PieterZ
  • Registratie: Juli 2012
  • Laatst online: 27-11 19:02
Het gaat om een reeks video's die te huur worden aangeboden. Het doel is om specifiek één iemand toegang te geven tot de video. Het handigste dus lijkt mij om de toegang enkel te verlenen tot het ip adres van de gebruiker.

(Dit maakt de kwestie wel wat ingewikkelder)

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
_PieterZ schreef op vrijdag 20 mei 2016 @ 14:48:
Het gaat om een reeks video's die te huur worden aangeboden. Het doel is om specifiek één iemand toegang te geven tot de video. Het handigste dus lijkt mij om de toegang enkel te verlenen tot het ip adres van de gebruiker.

(Dit maakt de kwestie wel wat ingewikkelder)
Je kan met nginx prima streaming doen met UID's. Zoek maar op nginx video streaming security.
Pagina: 1