Problema flash/php protejare poze
Moderator: Moderatori
Problema flash/php protejare poze
Incerc sa fac o combinatie de php/flash/javascript pentru o galerie foto. Principalul atu al acestui script ar fi ca nimeni sa nu poata salva imaginea originala. Pentru a afisa imaginea se incarca jpg-ul intr-un flash si este afisata intr-un anumit fel.
problema mea: cum imi protejez imaginile dintr-un director, in sensul sa le "livreze" doar daca sunt cerute de flashul meu. Am incercat cu verificarea refererului, insa flashul nu trimite referer. Alta idee?
problema mea: cum imi protejez imaginile dintr-un director, in sensul sa le "livreze" doar daca sunt cerute de flashul meu. Am incercat cu verificarea refererului, insa flashul nu trimite referer. Alta idee?
- Sim Master
- Average Member
- Mesaje: 189
- Membru din: Dum Aug 22, 2010 4:31 pm
- Localitate: Timisoara
- Contact:
poti verifica user agent
din cate stiu flashul are "Shockwave Flash"
eventual fa un fisier php si pune codul asta:
si fa un request cu flash si vezi ce variabile mai sunt in plus pe acolo de care te poti folosi
din cate stiu flashul are "Shockwave Flash"
eventual fa un fisier php si pune codul asta:
Cod: Selectaţi tot
<?php
print_r($_SERVER);
?>
si fa un request cu flash si vezi ce variabile mai sunt in plus pe acolo de care te poti folosi
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
Protejezi fisierele in folder in care poate citi/executa doar PHP-ul [nu stiu exact sa-ti zic numeric care sunt privilegiile] si le treci prin GD la afisare.
Ca sa poti face aceasta protectie, trebuie sa ai un user autentificat, sau ceva de genul asta si fiecare imagine in baza de date, cu un ID. Inainte sa treci poza prin GD, verifici autentificarea.
Ca sa treci poza prin GD faci ceva de genul asta:
[php] <?php
// verifici autentificarea
// verifici daca poza apartine userului
// $imaginea = imaginea din baza de date care are ID-ul = $_GET['id']
$im = @imagecreatefromjpeg($imaginea) or die('Cannot Initialize');
header ('Content-type: image/jpeg');
imagejpeg($im); imagedestroy($im);
?> [/php]
apoi, link-ul catre poza va fi
http://aasdas.com/getPoza.php?id=3
Ca sa poti face aceasta protectie, trebuie sa ai un user autentificat, sau ceva de genul asta si fiecare imagine in baza de date, cu un ID. Inainte sa treci poza prin GD, verifici autentificarea.
Ca sa treci poza prin GD faci ceva de genul asta:
[php] <?php
// verifici autentificarea
// verifici daca poza apartine userului
// $imaginea = imaginea din baza de date care are ID-ul = $_GET['id']
$im = @imagecreatefromjpeg($imaginea) or die('Cannot Initialize');
header ('Content-type: image/jpeg');
imagejpeg($im); imagedestroy($im);
?> [/php]
apoi, link-ul catre poza va fi
http://aasdas.com/getPoza.php?id=3
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
@vectorialpx - OP nu cred ca vrea sa preia imaginile prin PHP (asta o va face aplicatia lui Flash), ci sa protejeze folderul cu imagini pentru a nu fi accesat via HTTP.
Nu ar fi mai bine sa le scoata din folderul public si sa blocheze accesul prin Apache la celelalte foldere? In felul acesta, imaginile vor fi mai usor de folosit in Flash.
Nu ar fi mai bine sa le scoata din folderul public si sa blocheze accesul prin Apache la celelalte foldere? In felul acesta, imaginile vor fi mai usor de folosit in Flash.
- Sim Master
- Average Member
- Mesaje: 189
- Membru din: Dum Aug 22, 2010 4:31 pm
- Localitate: Timisoara
- Contact:
dar flashul nu este server-side ceea ce inseamna ca face request la imagini la fel ca si o pagina html nu?
iar daca apache nu da voie sa accesezi folderu respectiv atunci nu poate lua imaginile si atunci va trebui un script php care se va folosi de GD ca sa incarce imaginile din folderul restrictionat. e corect sau spun prostii?
iar daca apache nu da voie sa accesezi folderu respectiv atunci nu poate lua imaginile si atunci va trebui un script php care se va folosi de GD ca sa incarce imaginile din folderul restrictionat. e corect sau spun prostii?
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
si da si nu
O parte m-ati inteles, o parte nu.
Flash-ul meu cere imaginea dintr-un director public. Daca parolez acel director flash-ul nu mai poate sa o ia de acolo. daca fac autentificarea automata cu flash nu este bine deoarece oricine poate decompila flash-ul si afla parola.
Prin protejarea imaginii vreau sa spun ca sa nu poata fi incarcata in forma //server.ro/dir/img.jpg insa flash-ul sa o poata cere in aceasta forma.
Am gasit o solutie, atunci cand omul da click pe link sa vada poza, se copie pentru 3 secunde poza intr-un director si se incarca in flash dupa care se sterge, insa nu este 100% protectie, este doar 95% si inca nu sunt multumit.
cine nu cunoaste codul va avea foarte mult de munca sa scoata imaginea originala.
Flash-ul meu cere imaginea dintr-un director public. Daca parolez acel director flash-ul nu mai poate sa o ia de acolo. daca fac autentificarea automata cu flash nu este bine deoarece oricine poate decompila flash-ul si afla parola.
Prin protejarea imaginii vreau sa spun ca sa nu poata fi incarcata in forma //server.ro/dir/img.jpg insa flash-ul sa o poata cere in aceasta forma.
Am gasit o solutie, atunci cand omul da click pe link sa vada poza, se copie pentru 3 secunde poza intr-un director si se incarca in flash dupa care se sterge, insa nu este 100% protectie, este doar 95% si inca nu sunt multumit.
cine nu cunoaste codul va avea foarte mult de munca sa scoata imaginea originala.
- Sim Master
- Average Member
- Mesaje: 189
- Membru din: Dum Aug 22, 2010 4:31 pm
- Localitate: Timisoara
- Contact:
mai poti incarca imaginea in baza de date. desi nu e foarte practic si s-ar putea sa mearga ceva mai incet dar macar nu mai ai fisiere pe server
iar ca sa incarci imaginea te folosesti de un script php si verifici user-agentul, versiunea flash si ce ai mai putea verifica
chiar daca nu o sa fie 100% sigur dar un 98% tot e
iar ca sa incarci imaginea te folosesti de un script php si verifici user-agentul, versiunea flash si ce ai mai putea verifica
chiar daca nu o sa fie 100% sigur dar un 98% tot e
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
OK.. so
Cred ca poti sa pui 700 pe folder, incearca, nu stiu sigur.
edit //
Ceea ce cauti tu nu are solutie practica 100%.
1. Exista print-screen
2. Daca ajunge in browser, ajunge si la mine.
Browser-ul e al meu, tu ai 0 (zero) control asupra lui.
S-a mai discutat p-aici si au incercat multi sa inventeze o roata mai rotunda ca alta... dar nu prea le-a iesit pentru ca exista o logica ce te duce in acelasi loc.
nevvermind scrie:@vectorialpx - OP nu cred ca vrea sa preia imaginile prin PHP (asta o va face aplicatia lui Flash), ci sa protejeze folderul cu imagini pentru a nu fi accesat via HTTP.
Deci, omul stie si PHP [sper!].ShadowElf scrie:Incerc sa fac o combinatie de php/flash/javascript pentru o galerie foto
Well... tocmai ai zis ca vrei sa le scoti din public. Cum le mai acceseaza HTTP-ul?nevvermind scrie:Nu ar fi mai bine sa le scoata din folderul public si sa blocheze accesul prin Apache la celelalte foldere? In felul acesta, imaginile vor fi mai usor de folosit in Flash.
Da, exact asta am spus. PHP este un intermediar.Sim Master scrie:dar flashul nu este server-side ceea ce inseamna ca face request la imagini la fel ca si o pagina html nu? iar daca apache nu da voie sa accesezi folderu respectiv atunci nu poate lua imaginile si atunci va trebui un script php care se va folosi de GD ca sa incarce imaginile din folderul restrictionat. e corect sau spun prostii?
Te contrazici. Cum zicea si Sim Master, Flash este client-side. Daca user-ul nu poate sa vada imaginea, nici Flash nu poate sa o vada.ShadowElf scrie:Prin protejarea imaginii vreau sa spun ca sa nu poata fi incarcata in forma //server.ro/dir/img.jpg insa flash-ul sa o poata cere in aceasta forma.
Nu-l "parolezi", doar ii restrictionezi accesul public astfel: da, Flash nu poate vedea si nici user-ul nu poate (asta vrei tu), dar PHP-ul poate. Astfel, poti face ce reguli vrei din PHP pentru acel userShadowElf scrie:Daca parolez acel director flash-ul nu mai poate sa o ia de acolo.
Cred ca poti sa pui 700 pe folder, incearca, nu stiu sigur.
Mi se pare o mare prostie. Si daca eu stau pe site mai mult de 3-5 secunde mi se sterge poza ?Am gasit o solutie, atunci cand omul da click pe link sa vada poza, se copie pentru 3 secunde poza intr-un director si se incarca in flash dupa care se sterge
edit //
Ceea ce cauti tu nu are solutie practica 100%.
1. Exista print-screen
2. Daca ajunge in browser, ajunge si la mine.
Browser-ul e al meu, tu ai 0 (zero) control asupra lui.
S-a mai discutat p-aici si au incercat multi sa inventeze o roata mai rotunda ca alta... dar nu prea le-a iesit pentru ca exista o logica ce te duce in acelasi loc.
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
O fi existand print screen, dar daca slideshow-ul face resize dinamic la imagini ar fi o idee buna ca folderul cu imaginile in marime naturala din folder sa nu fie accesate, nu?
O idee, cum au sugerat-o unii, e amestecare pseudo-haotica ("obfuscation") a numelor imaginilor sau a URL-ului catre ele. Gen "1kjh1kjh2jh3kjh434.jpg". Evident, aplicatia flash ar terbui sa stie numele fisierului, sau sa decodifice calea catre fisier.
Later edit:
Altele: ar putea pune un "index.php" in folderul cu imagini si un .htaccess tot acolo cu "Options -Indexes" sau "IndexIgnore *.jpg", cum spune aci. Nu ca ma pricep, dar arunc si eu seminte, poate infloresc.
O idee, cum au sugerat-o unii, e amestecare pseudo-haotica ("obfuscation") a numelor imaginilor sau a URL-ului catre ele. Gen "1kjh1kjh2jh3kjh434.jpg". Evident, aplicatia flash ar terbui sa stie numele fisierului, sau sa decodifice calea catre fisier.
Later edit:
Altele: ar putea pune un "index.php" in folderul cu imagini si un .htaccess tot acolo cu "Options -Indexes" sau "IndexIgnore *.jpg", cum spune aci. Nu ca ma pricep, dar arunc si eu seminte, poate infloresc.
Ultima oară modificat Joi Sep 16, 2010 4:56 pm de către nevvermind, modificat 1 dată în total.
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
Daca vrei sa protejezi niste poze, trebuie sa fi suficient de imbecil sa le pui publice pe cele originale, nu? Si daca se aplica versiunea mea, cu GD, tot nu trebuiesc folosite imaginile originale, mai ales daca sunt mari, pentru ca rupi server-ul.nevvermind scrie:O fi existand print screen, dar daca slideshow-ul face resize dinamic la imagini ar fi o idee buna ca folderul cu imaginile in marime naturala din folder sa nu fie accesate, nu?
Cea mai buna solutie, si cu asta inchei, recomandata de oricine, este sa pui watermark pe imaginile publice. Nu ti le ia nimeni si, daca ti le ia, nu are decat sa stea sa scoata watermark-ul in Photoshop. Daca e un watermark mare [daca e un client care vrea musai sa i se protejeze pozele] va fi imposibil sa scoata watermark-ul perfect.
edit // prima data am crezut ca vrei sa faci protectia per user autentificat. Daca vrei sa faci aceasta protectie pentru ORICE user, nu-ti recomand GD pentru ca e inutil... va genera aceeasi poza ca si cum ai lua-o de pe server cu HTTP. Concluzia este ca nu exista o astfel de protectie.
Option -Indexes
E o masura de securitate care trebuie folosita la orice site, nu doar la poze.
Ce se intampla?
Asa e fara
http://blog.vectorialpx.net/b/tpl/images/
[am vrut eu sa fie cu index, din anumite motive]
Asa e cu
http://www.vectorialpx.net/images/
Spor la programat!
Ultima oară modificat Joi Sep 16, 2010 5:19 pm de către vectorialpx, modificat 1 dată în total.
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Maestre, nu se numeste "imbecilitate", ci "necunostinta".
Era vorba de protectia imaginilor, in cazul in care ele (originale sau nu), sunt puse in folderul - nu public - ci intr-un altul, accesibil de catre script-ul PHP. Intrebam si sugeram pana aflam ca nu se poate. Si am aflat ca nu prea se poate. Watermark-ul e-o idee buna.
Sper ca OP-ul e convins ca trebuie utilizata metoda sugerata de tine, in speranta ca nu vei face BSoD daca procedeaza altfel.
Era vorba de protectia imaginilor, in cazul in care ele (originale sau nu), sunt puse in folderul - nu public - ci intr-un altul, accesibil de catre script-ul PHP. Intrebam si sugeram pana aflam ca nu se poate. Si am aflat ca nu prea se poate. Watermark-ul e-o idee buna.
Sper ca OP-ul e convins ca trebuie utilizata metoda sugerata de tine, in speranta ca nu vei face BSoD daca procedeaza altfel.
- Sim Master
- Average Member
- Mesaje: 189
- Membru din: Dum Aug 22, 2010 4:31 pm
- Localitate: Timisoara
- Contact:
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
Daca vrei sa protejezi o valiza si o lasi in mijlocul bulevardului, ducandu-te la WC, nu inseamna ca esti "necunoscator"nevvermind scrie:Maestre, nu se numeste "imbecilitate", ci "necunostinta".
Repet: daca nu se vrea restrictionarea userilor logati [controlati de PHP] atunci varianta cu GD pica, pentru ca este inutila [mananca resurse inutil, pentru ca GD-ul este un mare consumator]. Cea mai buna solutie e watermark-ul.
Pentru hoti, exista Firebug [extensia firefox], care iti aduce la suprafata orice proces si request din site. So, cum ziceam, browser-ul nu poate sa fie controlat.
good point!Sim Master scrie:si ca un "P.S.", daca folosesti PHP pentru procesarea imaginilor atunci nu e obligatoriu sa tii fisierele (pozele) in public_html, poti sa le pui in afara si atunci stii sigur ca nu vor fi accesate
PS-ul meu: [parerea mea]
Imaginile stocate in baza de date sunt cea mai mare prostie.
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 7 vizitatori