Autor Zpráva
senior
Profil
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
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
.htaccess nemám na hostingu povolený.
l564
Profil
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
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
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
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
Ř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
Louka:
Skúsil som tvoj napad, ale neviem kam mám napísať meno adresára s fotkami (foto/1.jpg).
Keeehi
Profil
<?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;
?>
obrazek.php?jmeno=1

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
Keeehi:
Vďaka za pomoc, ale tvoj kód neobsahuje heslo a preto som poprosil Louka.
senior
Profil
To mi skutočne nevie nikto poradiť :-(
jenikkozak
Profil
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
jenikkozak:
Script od Keeehi nerieši podstatu problému - ochranu heslom [#12]
V scripte od Louka neviem nájsť chybu a preto som sa pýtal kam mám adresar foto napísať [#10]

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0