In een website heb ik een fotoalbum waarbij de foto´s via het php-script getoond worden.
nou is het ook mogelijk dat de foto benaderd wordt door de directe link als url op te geven, maar ik wil dat er dan een forbidden melding komt. Hoe doe ik dat?
De image-bestanden staan in deze structuur:
mijndomein.nl/albums/album1/foto1.jpg
Dus alles in submappen in /albums/
deny from all in .htaccess
Of je mappen buiten je webdir zetten als deze afbeeldingen toch via een script geserveerd worden.
Dat lijkt me een beetje kort door de bocht. Wat je tegen hotlinking kunt doen is iets als het volgende in .htaccess:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Als je een lege referrer wilt toestaan kun je regel 2 weg laten.
@Ariën: Nee, want dan krijgt het script ook geen toegang.
Ik begrijp nog steeds niet volledig hoe dat werkt met htaccess, want met deny from all, kan ik wel voorkomen dat er een directe link naar php-bestanden gemaakt wordt, maar niet naar een jpg file. Ook bv. een css bestand wordt niet uitgevoerd door het script als ik deny from all zet. (de css wordt via de head geladen)
En ik zou graag de map buiten de root plaatsen, maar de host staat dit niet toe.

[size=xsmall]Toevoeging op 25/01/2016 17:26:13:[/size]

@Ben: Ik heb deze regels in de .htaccess in de map albums toegevoegd, maar dat voorkomt nit dat ik de afbeelding rechtstreeks kan openen.
Tortuga web op 25/01/2016 17:17:29

@Ariën: Nee, want dan krijgt het script ook geen toegang.

Niet waar. Via PHP wordt de foto via het filesystem opgevraagd, en het gaat dus niet via de webserver. Je kan die .htaccess toch in de map zetten waar de foto's in staan?
Ik neem aan dat er geen andere bestanden instaan die je niet geblokkeerd wilt hebben.

Welke webserver gebruik je eigenlijk?
@Ariën: Ik zet de .htaccess in de map met de foto´s. In de .htaccess staat dit:
<files *.*>
order allow,deny
deny from all
</files>
En vervolgens ga ik naar de webpagina, roep de albums aan en zie vervolgens alles behalve de foto´s waar die er eerst wel waren. Wat doe ik dan niet goed.
Ik test met Wampserver

En om het nog erger te maken: via het script kom ik niet bij de images, maar via de directe link wel
deny from all alleen al, zou moeten werken. Desnoods kan je er met .htaccess een wachtwoord op gooien als dat niet werkt.
Ik krijg het niet voor elkaar.
Met deny from all worden de images ook door het script geblocked.
Met een htpassword, dit heb ik op de hostserver getest niet in wamp, worden de images ook geblocked.
Is er geen andere methode?
Staan de images op dezelfde server als die van het script? En hoe haal je de images op in het script? Daar zit de fout, vermoed ik.
Dat lijkt me een beetje kort door de bocht.

Hangt van het script af, als hier verder geen authenticatie checks of wat dan ook in zitten is dit script enkel een doorgeefluik.

Ook heeft de TS niet aangegeven dat het probleem hotlinking betreft, enkel dat de afbeeldingen niet rechtstreeks aangeroepen mogen worden.

Reageren