Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Lopuch, server nejen
pro botaniky

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub PHP [ŽP: neomezená] (kategorie Programování) moderuje makovec.
Archiv
Diskuse o vybornem skriptovacim jazyku php. Dulezite odkazy, pred polozenim dotazu zkuste hledat odpoved zde:
  1. www.php.net - domovská stránka PHP
  2. www.kosek.cz - spousta tutorialu pro PHP v češtině
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: apropgy
[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
joker joker If you see the flash, duck and cover! 26.2.2008 20:42  2186
Bredy [2184]: To ovšem předpokládá, že máš uložené heslo v databázi.
pepak pepak - Pepak.net 26.2.2008 20:20  2185
Bredy: OTP je jakekoliv heslo, ktere se pri kazdem pouziti meni. Zpusobu, jak toho dosahnout, je vic, tenhle s mnohonasobnym hashovanim mi ovsem prijde velice chytre vymysleny.
bredy 26.2.2008 20:17  2184
Možna budu vypadat jako nýmand, ale podle mne je OTP úplně něco jiného.
1) Server pošle nějaký řetězec.
2) Uživatel zadá heslo, a na klientské stráně jej zahashuje
3) Hash pošle serveru, ten provede stejný hash s heslem na své straně
4) Pokud dojde ke stejnému hashi, tak je autorizováno.

Další možností je pomocí synchronizace času. Dobrý příklad je například autorizační kalkulačka eBanky.

Co jsem pochopil, tak hlavní význam OTP je znesnadnit získání hesla odposlechnutím ze sítě.
mpts mpts Je to jinak, ba přesně naopak! 26.2.2008 17:51  2183
resp. asi uloz_do_db(X--, sql_quote(trim($_POST['username']))); :-)
mpts mpts Je to jinak, ba přesně naopak! 26.2.2008 17:48  2182
nollie: (popisuji pepakův algoritmus, ten angl. by byl jen malinko jiný, a funkce jako nacti_z_db, sql_quote apod. si musíš domyslet, to je snad jasné):
$heslo_od_uzivatele = trim($_POST['heslo']);
$heslo_z_db = nacti_heslo_z_db(sql_quote(trim($_POST['username'])));
for ($ii = $X; $ii < $N; $ii++)
    $heslo_od_uzivatele = hash_fce($heslo_od_uzivatele);
if ($heslo_od_uzivatele != $heslo_z_db) fuck_user();
else welcome_user();
uloz_do_db(X--);


Ale nezlob se, pokud toto opravdu nedovedeš napsat sám, asi bys neměl psát nic na web, dokud se to nenaučíš. To není nějaká namyšlenost, ale prostě Tvé aplikace nebudou bezpečné a asi ani dobré, protože toto je celkem trivialita.
pepak pepak - Pepak.net 26.2.2008 17:46  2181
Mpts: To nebyl preklad. Ja jsem navrhoval zpusob, jak udelat OTP.

S tim snizovanim X o jednicku to je otazka. Bezpecnejsi (z hlediska prolomeni hesla) urcite je snizovat, naproti tomu by se to dalo zneuzit pro DoS (vycerpat nekomu cele jeho heslo).
mpts mpts Je to jinak, ba přesně naopak! 26.2.2008 17:38  2180
pepak: Ten Tvůj překlad (či popis obsahu, já vím, že to není přímo překlad) je trochu chybný, ne? Jednak popisuješ malinko jiný algoritmus ověřování (jehož výsledek by byl ovšem stejný), jednak mi přijde zbytečné (a ani ten anglický text to neuvádí) snižovat X o jedničku i v případě neúspěšného pokusu o ověření.
nollie 26.2.2008 17:21  2179
MD5 bych klidne pouzil, to staci, ale furt proste nevim jak to napsat
pepak pepak - Pepak.net 26.2.2008 16:30  2178
Co je na tom za problem? FOR smycku snad zvladnes a pokud nad tim nechces premyslet, tak tedy pouzij to MD5/SHA1, na ktere ma PHP primo funkci...
nollie 26.2.2008 16:24  2177
pepak [2176]: Jasny, todle chapu, to uz mam davno prostudovany, ale napsat to v PHP je pro me orisek. Nejsem zas takovej prebornik.
Jinak v telefonu mam aplikaci, kera mi generuje ty hesla a to se bude pri prihlasovani vyuzivat.
pepak pepak - Pepak.net 26.2.2008 16:04  2176
Prakticky to vyzkousene nemam, ale dal jsem "SKEY" do Googlu. Na to mi vypadla stranka The S/Key Password System, kde je to v odstavci How It Works dost srozumitelne popsano:

"A user initializes S/KEY by selecting a secret password and n, a number of passwords to generate. A secure hash function (currently MD4) is applied to the secret password n times. The result is stored on the server. When the user attempts to log in, the server issues a challenge, which is the number n-1. Software on the user's client machine prompts for her secret password, and applies n-1 iterations of the hash function to it, and sends this response to the server. The server applies the hash function to this response. If the result it obtains is the same as the value it stored earlier, the authentication worked. The user is allowed in, and the server replaces the stored value with the response obtained from the client, and decrements the password counter. [Haller, 1994; Rubin, 1995]"

Tzn. implementace zcela trivialni: Uzivatel ti nejak zada originalni heslo. Ty tohle heslo N-krat prozenes nejakou hash funkci (skoro bych radsi doporucoval jinou nez MD4, MD5 a SHA1) a ulozis si do databaze vysledek a taky cisla N a X=N. Az se bude chtit uzivatel prihlasit, tak mu napises, "uzivateli, posli mi svoje heslo X-krat prohnane hashovaci funkci H". Protoze svoje tajne heslo zna, tak to dokaze a ten hash ti posle. Ty to prozenes dalsimi (N-X) hashi a porovnas s tim, co je v databazi. Pokud to sedi, je heslo spravne, pokud to nesedi, je heslo spatne. Tak jako tak zmensis X o 1. Pokud dosahnes jednicky (resp. z bezpecnostnich duvodu by bylo lepsi zastavit se nekde vys, treba u desitky), tak uzivatele pozadas, at si zvoli nove heslo.
nollie 26.2.2008 14:39  2175
OTP - SKEYMam stranky v PHP a chci aby se lidi prihlasovali do admin prostredi pomoci jednorazovyho hesla (OTP), nejlepe SKEY.
Poradi mi nekdo jak na to?
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 11.2.2008 16:34  2174
jak na to ted koukam zpetne tak jsem byl jenom linej to poradne nastudovat a myslel ze je to slozitejsi.
cekal jsem puvodne neco jako errorlog apache, kde se da vybirat z informaci ktery me zajimaj.

Tady je pekne ze pokud si to trochu jeste prepracuju tak muzu ty problemy rovnou na jenom miste resit/hlasit... |filtrovat
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 11.2.2008 16:29  2173
function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars){
$dt = date("Y-m-d H:i:s (T)");
$errortype = array (
E_ERROR => "Error",
E_WARNING => "Warning",
E_PARSE => "Parsing Error",
E_NOTICE => "Notice",
E_CORE_ERROR => "Core Error",
E_CORE_WARNING => "Core Warning",
E_COMPILE_ERROR => "Compile Error",
E_COMPILE_WARNING => "Compile Warning",
E_USER_ERROR => "User Error",
E_USER_WARNING => "User Warning",
E_USER_NOTICE => "User Notice",
E_STRICT => "Runtime Notice"
);
//$user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
$drop_errors = array( E_NOTICE, E_STRICT );
if (in_array($errno, $drop_errors)) return true; // tyto chyby preskakujeme
// if ($errno == E_USER_ERROR) { mail("phpdev@example.com", "Critical User Error", $err);
// tady mozno specialni pripady treba mailovat atd....
$err=$dt.' '.$errortype[$errno].':'
.$filename.':'.$linenum.')'."n"
.$errmsg."n"
.$_SERVER['REQUEST_URI']."n"
.$_SERVER['HTTP_USER_AGENT']."n";
error_log(strip_tags($err));
}
set_error_handler("userErrorHandler");
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 11.2.2008 16:28  2172
ehm, tak uz jsem si to napsal (zkopcil) sam a v zaveru si dovyprdnu do logu co potrebuju...slo o to, aby veskere chyby co vzniknou v ramci PHP byly zapsany do logu - to se deje, ale ja chtel aby mely i informace treba takove ktere mi radis...
- takze mi nezbylo, nez obslehnout prikladovej pripad v napovede na napsani vlastniho errorhandleru a v ramci nej tohle zjistit a predat dal jako se to delo driv pomoci log_error(), kterezto to sazi s doplnenymi informacemi do log souboru...

[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt