Autor | Zpráva | ||
---|---|---|---|
senior Profil |
#1 · Zasláno: 10. 5. 2011, 17:25:37
Potreboval by som poradiť ako zablokovať zobrazenie zväčšeniny fotky z miniatury. Zväčšeninu zobrazujem cez JS. Niekde som to už videl urobené cez heslo, ale tú stránku som si neuložil :-(
Ďakujem za pomoc. |
||
Darker Profil |
#2 · Zasláno: 10. 5. 2011, 17:29:44
Jde to jen za předpokladu, že odesíláš zmenšený náhled a originální fotká vyžaduje autorizaci (třeba přes PHP+.htaccess, nebo jen .htaccess)
Zablokovat javascriptem nejde nic. Ne definitivně. |
||
senior Profil |
#3 · Zasláno: 10. 5. 2011, 17:44:23
.htaccess nemám na hostingu povolený.
|
||
l564 Profil |
#4 · Zasláno: 10. 5. 2011, 18:13:56
Darker:
„Zablokovat javascriptem nejde nic.“ Jde, když jsem se učil podmínky tak jsem našel šikovný script na přihlašování, ale kouknu do zdroje a tam jsou vypsaný všechny přihlašovací jména a hesla. Tak že nedoporučuji. Pak je na řadě PHP ten je o něco bezpečnější. Podporuje tvůj hosting php? |
||
Louka Profil |
#5 · Zasláno: 10. 5. 2011, 18:47:20
l564:
Darker psal, že "ne definitivně". Jinak já bych zkusil opravdu to PHP, předpokládám že .htpasswd máš také nepovolené. V podstatě by stačilo dát onclick té miniatury na var x = prompt('Zadej heslo'); if ( x != '' ) window.location='fotka.php?id=heslo='+x; A do fotka.php dát <?php if ( $_GET['heslo'] == "tvoje heslo" ) { ZobrazFotku(); } else { echo "Chyba."; } ?> Přičemž fotky bys musel mít v nějakém adresáři kam by nevedl žádný link, aby ho bylo těžší najít (bez hesla) a názvy fotek doporučuju s prefixem z náhodných znaků - např hash názvu fotky, pak by byl src roven $src = sha1($jmeno)."_".$jmeno; a ztížilo by se nalezení. |
||
Darker Profil |
#6 · Zasláno: 10. 5. 2011, 19:45:13
Louka:
„hash názvu fotky“ To radši ne. Obvykle je to první co mě nepadne zkoušet a pár lidem jsem se už takhle vysmál. |
||
Louka Profil |
#7 · Zasláno: 10. 5. 2011, 22:20:20
Darker:
Původně mě napadl ďábelský plán s unikátním náhodným každý den měněných hashem, který by se tahal z DB, ale nakonec jsem to trochu zjednodušil. Koneckonců neznal bys jméno adresáře (=hash hashe hashů názvů všech fotek dohromady :D)... |
||
Keeehi Profil |
#8 · Zasláno: 10. 5. 2011, 23:27:17
Řešení bych měl, ale nic pěkného to není.
Kód pro vytvoření souboru, který obsahuje data z obrázku, avšak pro návštěvníka je nezobrazitelný i bez použití htaccess <?php $soubor="ahoj"; file_put_contents($soubor".php",'<?php $obsah = \'' .str_replace("'","\'",file_get_contents($soubor.".jpg")).'\';?>'); ?> Kód pro vytvoření obrázku (obrzek.php) <?php $jmeno=$_GET["jmeno"]; header("Content-Type: image/jpeg"); include $jmeno.".php"; echo $obsah; ?> Url obrázku je nyní obrazek.php?jmeno=ahoj. Nyní je obrázek dostupný pouze přes předchozí url a jelikož je to php script, tak se tam může vložit nějaká ochrana heslem. Pozor! Je to jenom návrh způsobu řešení a není dostatečně bezpečné! Jelikož na 4. řádku se includuje vlastně jakýkoliv php script. Nejlepším řešením by bylo mít ty upravené obrázkové soubory ve speciálním adresáři a ten includ ošetřit na vkládání pouze z toho daného adresáře. Jinak díky jednoduchosti scriptu počítá pouze s obrázky s koncovkou jpg. Samozřejmě by to šlo rozšířit. Jinak by taky šlo obrazová data místo do php souborů ukládat do DB. Tím by se vyřešily problémy s bezpečností. Co já však mám zkušenosti s ukládáním velkého množství obrázků do DB, tak je naprostou nutností použít index nad sloupcem, podle kterého se vyhledává, protože jinak je rychlost otřesná. |
||
senior Profil |
#9 · Zasláno: 11. 5. 2011, 12:59:16
Louka:
Skúsil som tvoj napad, ale neviem kam mám napísať meno adresára s fotkami (foto/1.jpg). |
||
Keeehi Profil |
#10 · Zasláno: 11. 5. 2011, 13:06:55
<?php $soubor="foto/1"; file_put_contents($soubor".php",'<?php $obsah = \'' .str_replace("'","\'",file_get_contents($soubor.".jpg")).'\';?>'); ?> <?php $jmeno=preg_replace('~[^\d\w]~','',$_GET["jmeno"]); header("Content-Type: image/jpeg"); include "foto/$jmeno.php"; echo $obsah; ?> 1) Umístěte obrázek 1.jpg do složky foto. 2) Spusťte první script 3) Ve složce foto by se měl vytvořit soubor 1.php. Ten tam nechte a 1.jpg můžete smazat. 4) Spusťte druhý script (obrazek.php?jmeno=1) - ukáže se obrázek. |
||
senior Profil |
#11 · Zasláno: 11. 5. 2011, 13:20:51
Keeehi:
Vďaka za pomoc, ale tvoj kód neobsahuje heslo a preto som poprosil Louka. |
||
senior Profil |
#12 · Zasláno: 12. 5. 2011, 11:33:46
To mi skutočne nevie nikto poradiť :-(
|
||
jenikkozak Profil |
#13 · Zasláno: 12. 5. 2011, 11:50:12
senior:
„To mi skutočne nevie nikto poradiť :-(“ Zajímavý výkřik. Co konkrétně nefunguje na těch skriptech, které Keeehi uvedl? (A vysvětlil.) Skript od Louky je jen schéma. (S chybou v adrese.) |
||
senior Profil |
#14 · Zasláno: 12. 5. 2011, 12:12:13 · Upravil/a: senior
|
||
Časová prodleva: 13 let
|
0