Autor | Zpráva | ||
---|---|---|---|
unlucky Profil |
Mám php soubor, který generuje obrázky. Mám stránku, která tyto obrázky zobrazuje takto <img src="/adresar/soubor.php?obrazek=xyz">
Chci všem zamezit přístup k souboru kromě skriptům ze stejné domény. Deny a order from all jsem zkoušel, obrázek se pak nezobrazuje. |
||
Joker Profil |
#2 · Zasláno: 21. 9. 2015, 12:36:30
unlucky:
„Deny a order from all jsem zkoušel, obrázek se pak nezobrazuje.“ Tak logicky. Obrázek stahuje návštěvníkův prohlížeč. K tomu, aby návštěvník mohl obrázek vidět, se k němu musí dostat. V požadavku, aby se návštěvník k obrázku dostal a současně nedostal je logický rozpor. |
||
juriad Profil |
#3 · Zasláno: 21. 9. 2015, 13:28:24
unlucky:
1) Můžeš vyžadovat přihlášení uživatele, pak ten skript soubor.php bude mít tu samou podmínku na přihlášení jako zbytek stránek. 2) Můžeš si obrázky cachovat na disku, pak tě výkon jejich generování nebude tak trápit. |
||
unlucky Profil |
#4 · Zasláno: 21. 9. 2015, 16:38:34
juriad:
teďka to řeším tak, že kontroluju sessiony, ale někde jsem viděl, že existuje lepší způsob. Bohužel si už nevzpomenu kde :( |
||
Martin2 Profil * |
#5 · Zasláno: 21. 9. 2015, 17:14:00
unlucky:
„ale někde jsem viděl, že existuje lepší způsob“ Většinou se to řeší kontrolou refereru HTTP požadavku. Buď v PHP z hodnoty $_SERVER["HTTP_REFERER"] nebo klidně i podmínkou v rewrite pravidlech konfigurace serveru.
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://www\.povolena-domena\.cz/ [NC] RewriteRule ^/adresar/soubor.php - [NC,F,L] |
||
bestik_63 Profil |
#6 · Zasláno: 21. 9. 2015, 17:21:28
Martin2:
Jestli se nemýlím, tak není problém podstrčit prohlížeči HTTP_REFERER, takže bych tu kontrolu spíše nechal na session. |
||
Martin2 Profil * |
#7 · Zasláno: 21. 9. 2015, 17:24:00
bestik_63:
„není problém podstrčit prohlížeči HTTP_REFERER“ Ano není to problém. Kontrolu refereru určitě nelze považovat za bezpečnostní opatření, ale jako obrana proti zatěžování serveru hotlinkováním zdrojů je to velmi účinný způsob. |
||
Časová prodleva: 10 let
|
0