Autor Zpráva
markétice
Profil
Jak zaheslovat stránku? (Pouze jednu)
thingwath
Profil *
To záleží... na spoustě věcí.

Pokud máte nějaké skriptování na serveru (jmenovitě třeba PHP), tak to lze udělat celkem snadno.

Pokud ne, nebo to nechcete použít, tak je situace o trochu horší. Umí to třeba apache, ale nastavení není zcela jednoduché a mnohdy to bez patřičných práv nebude vůbec možné.

Třeba by stačilo stránku zašifrovat?
markétice
Profil
To znamená?
Jak?
oktam.
Profil *
<form>
<input type=text name=heslo>
<input type=submit>
</form>

<?php
$i_heslo = 'helena';

if ($i_heslo == $_GET['heslo']) {
echo 'spravne heslo';
}

else {
echo 'nespravne heslo';
}

?>
Yuhů
Profil
Přečti si prosím toto:

www.jakpsatweb.cz/heslo.htm

a pak upřesni dotaz.
Celebi
Profil
Když už se tu objevil tento dotaz, mohl bych se zeptat, jestli lze dát více možností hesel?
<form>
<input type=text name=heslo>
<input type=submit>
</form>

<?php
$i_heslo = 'helena',
$i_heslo = 'celebi';

if ($i_heslo == $_GET['heslo']) {
echo 'spravne heslo';
}

else {
echo 'nespravne heslo';
}
Palidi
Profil
Více hesel jde - ale musíš si je dát do pole a to postupně projít. Nebo je mít v databázi. Nebo viz níže.

Pokud už máš PHP je možné použít příslušnou hlavičku (jelikož to nemá Yuhů v tom odkazu tak to sem hodím). Varianta pro více uživatelů (každý má jméno a heslo ale koneckonců nemusíš jméno kontrolovat), nejsou v poli ani v databázi ale testují se jeden po druhém (jo a ještě je popřípadě potřeba upravit proměnné - takhle jsou vidět jen při konfiguraci PHP se zapnutým register_globals) :

if (!IsSet($PHP_AUTH_USER)) {
header("HTTP/1.0 401 Unauthorized");
header("WWW-Authenticate: BASIC realm=\"Tady je název zóny který se tomu co se přihlašuje ukáže\"");
echo "Přístup k t&igrave;mto stránkám je vázán heslem";
exit;
}

$user="";
if (($PHP_AUTH_USER=="helena") and ($PHP_AUTH_PW=="hesloheleny")) $user="helena";
if (($PHP_AUTH_USER=="celebi") and ($PHP_AUTH_PW=="heslocelebiho")) $user="celebi";
if ($user=="") {
header("HTTP/1.0 401 Unauthorized");
header("WWW-Authenticate: BASIC realm=\"Tady je název zóny který se tomu co se přihlašuje ukáže\"");
echo "MUSITE ZNAT HESLO PLATNEHO UZIVATELE";
exit;
}

echo "přihlášený uživatel $user";

Tahle autorizace má své výhody a nevýhody. Pokud to dáš na začátek všech scriptů nemusíš se o nic jiného starat. Nemusíš si nikam ukládat cookies a podobně. Dá se na to přistupovat i pomocí zadání jména a hesla do url http://jmeno:heslo@www.nejakyveb.cosi/stranka.php (akorát poslední verze IE tohle blokuje). Trochu problém je s odhlášením - zatím jsem nepřišel na metodu která by všechny browsery donutila zapomenout heslo - pomůže jedině zavřít všechny okna.

Pokud to myslíš s tím zaheslováním vážně je nutno použít https protokol. Viz Yuhův text. Stejně tak je základní zásada zabezpečení že administrátor nesmí mít možnost přečíst heslo. Taky když si někdo přečte tenhle script tak hned ví všechny hesla. Takže je dobré ho zabezpečit pomocí MD5 nebo jiného algoritmu. Ve scriptu by pak dotaz vypadal např. takto :

(crypt($PHP_AUTH_PW,"hl")=="hlATVYNb9aUv3")

Ten podivný řetězec vyrobíš pomocí crypt z toho hesla co tam chceš mít, zobrazíš si ho a zapíšeš. Efektivnější je to pochopitelně pokud máš hesla v databázi. Z toho řetězce nikdo heslo zpět neuhodne.

PS: pokud někdo umíte tuhle autentizaci dokonale použít (včetně odhlášení) tak to sem napište.
22k
Profil *
Celebi to je trosku blbost ne? TO cos napsal , tak mu to vezme jen to druhy heslo .... ne obe
Jan Tvrdík
Profil
Celebi samozřejmně, že to jde. Vypadalo by to asi takhle:


<form method="post"> 

<input type=text name=heslo>
<input type=submit>
</form>

<?php
if ($_POST['heslo'] == heslojedna || $_POST['heslo'] == heslodva || $_POST['heslo'] == heslotri): ?>
tajnej obsah stránky
<?php else: ?>
Co sem lezeš, když neznáš heslo?!!!
<?php
endif;
?>


PS: Možná tu mám někde chybu, protože to píšu v rychlost :-)
Celebi
Profil
Díky. Moc mi to pomohlo.
magnum
Profil *
Ahoj !

JPW citam uz velmi dlho ... este ako modemista ked som si to tahal v zip-e ;) ale toto forum citam prvy krat a hned by som mal 1 dotaz.

A to ze co testujete na zaciatku kazdej stranky cookie (ved sa da sniffovat) alebo si odovzdavate v poste session id pripadne ip adresu alebo to aj kombinujete ?

Sam take stranky pisem a daval som to cez cookie (aj ten traffic nieco stoji) aj cez post aj kombinaciou ale nikdy som nevidel cudzie riesenie a teda netusim ci to robim dobre a ci sa da aj inak ...

Palidi: Este k tej autorizacii neviem ci to dobre chapem tak len na potvrdenie
toto "header("WWW-Authenticate: BASIC realm=\"Tady je název ...\"");" sposobi vypitanie si hesla od uzivatela a zapisanie premennej $PHP_AUTH_USER a $PHP_AUTH_PW ...
... ak ano tak je treba tieto premenne posielat nejakym sposobom dalej ?

Vdaka !

PS sa ospravedlnujem za diakritiku a ... ale som to az teraz precital a uz to nejdem prepisovat, v tychto veciach som vykopavka (mp3 pocuvam cez mpg123 :) ) a klavesnicu prepnem na SK len raz za tyzden ... :) nabuduce sa urcite polepsim ...
Palidi
Profil
magnum: ano, tento header způsobí že browser vyzve uživatele k zadání hesla. Při dalším průchodu dostaneš heslo v těch dvou proměnných.
Browser si toto heslo pamatuje a vždy ho znovu posílá sám. Zapomene ho až při zavření všech oken. Teoreticky by ho měl zapomenout v okamžiku kdy mu znovu pošleš tuto hlavičku (i když heslo je správné) ale tohle moc nefunguje.

Jinak k těm cookies - browser by je měl automaticky poslat při dotazu na stránku. Těch dat není tolik. Cokkies i post (popř. get) mají každý své výhody a nevýhody. IP se používá spíše jen pro kontrolu. Postavit autentifikaci na IP nejde - pokud jsou uživatelé za proxi tak je podle IP nerozlišíš. Ohledně odchycení dat - ano, pokud nepoužíváš https je odchycení hesla možné, s https už ne - posílá se zakryptovaně.
thingwath
Profil *
S https se dá taky pokusit o nějaké man in the middle útoky, ale to už dá dost práce a není to nic jednoduchého. Cookies podle mého pro běžné nenáročné použití úplně stačí, ve spolupráci se sessiony je to navíc i celkem jednoduché napsat.
Jan Tvrdík
Profil
Já jsem to vyřešil takhle:


<html>

<head>
<title>Heselný přístup</title>
<style>
#chybka {border: 2px solid red; padding: 5px; width: 215px; background-color: #fee6de; text-align: center}
#start {border: 2px solid blue; padding: 5px; width: 215px; background-color: #d2fbff; text-align: center}
</style>
</head>
<body>
<? if($heslo == "tajné heslo" || $heslo == "jiné heslo"): ?>
..tajny text
<? elseif($heslo == ""): ?>
<div id="start">Přihlášení:</div><br>
<form action="<?echo $_SERVER["PHP_SELF"]?>" method="post">
<input type="password" name="heslo">
<input type="submit" value="odeslat">
</form>
<? else: ?>
<div id="chybka">Zadané heslo je chybné</div><br>
<form action="<?echo $_SERVER["PHP_SELF"]?>" method="post">
<input type="password" name="heslo">
<input type="submit" value="odeslat">
</form>
<? endif ?>



</body>
</html>


PS: Tohle by mělo byt už na 100%.
jonáš
Profil
Víte někdo, jak by měl vypadat kód na odhlášení se, když mam HTTP Autentizaci?
A aby to fungovalo v IE 6.0


<?
$co=$_GET["co"];
if(!isset($PHP_AUTH_USER)):
header("HTTP/1.0 401 Unauthorized");
header("WWW-Authenticate: Basic realm=\"administrace_kbtinstitut\"");
echo("ADMINISTRACE");
exit;
elseif($PHP_AUTH_USER!="jonas"):
echo("neregistrované jméno!");
exit;
elseif($PHP_AUTH_PW!="__heslo__"):
echo("špatné heslo");
exit;
endif;

if($co=="logout"):
????????????????????????????????????????;
endif;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-2">
<title>kbtinstitut.cz</title>
</head>
<body>
jste přihlášen!<br>
<a href="administrace.php?co=logout">odhlásit</a>
</body>
</html>


děkuju Jon
mikoran
Profil *
ještě k těm jednodušším zaheslováním.jsem amatér a mám takový jednodušší stránky.teprv se to učím,ale můj problém je jasný.chci, aby byla třeba jenom jedna stránka zaheslovaná.prosím,napiště mi někdo KONKRETNI příklad.nějak nechápu, kam se má psát ten html soubor,který je "tajný".omlouvám se za svoji nechápavost,ale každý jednou úplně začíná...jak byste mi to doporučili,aby to bylo JEDNODUCHE a POCHOPITELNE pro amatery.děkuju moc
Toto téma je uzamčeno. Odpověď nelze zaslat.