Autor Zpráva
PAVEL PROCHAZKA.zde.cz
Profil *
Zdravim,
na mem webu jsem si udelal registraci, ale casem jsem si vsimnul ze nekdy se jde prihlasit a nekdy nejde.
To se stane pokud zmenim heslo, nove heslo me prijde emailem (ne ze bych hesla zapominal, ale vsechno jsou testovaci ucely).
Jelikoz mam hesla v databazi zaheslovana pomoci funkce SHA1, tak pri zadosti o heslo generuji nove a to posilam emailem, majitely uctu ktery o heslo pozadal. Strasne dlouho jsem koumal proc se nekdy mohu prihlasit s novim heslem a nekdy ne, pokud jsem se nemohl prihlasit, tak jsem si vygeneroval nove heslo a nekdy to pomohlo a nekdy ne.
Tedka jsem prisel proc se nekdy nemohu prihlasit. Nekdy (dost casto) se me stava za heslo prijde JINE! nez jsem odeslal.
ZAJIMAVE.....je ze je zmeneno jen to heslo, zbytek emaily je takovy jaky jsem odeslal.... Napada nekodo co asi muze bejt blbe?

Proc se mrsi jen heslo a ne cely email. Navic to heslo se zmrsi presne podle stejneho vzorce!!!
napriklad ksy mam heslo: kgwWz8Dy, tak ma prijde: kgwWzABy je tam rozdil ve dvou pismen, pokazde se zmeni jen dve pismena, kterakoliv a nakdy se prisce hodnota 2 a nekdy se hodnota 2 odecte od znaku.
To znamena ze pokud se zmrsi cislo 5, tak muze mejt hodnotu 7 a nebo 3. Podobne to faka treba u 8. bud to bude 8 nebo 6 pripadne A. Tak tadka me zajima co se vybec deje a jaka je naprava. Predpokladam ze se mohl tezko nekdo dostat na server pes.cz a tam naockovat funkci mail v php aby menila jen urcitou cast emailu.....
Casero
Profil
PAVEL PROCHAZKA.zde.cz
A jak to nové heslo generuješ, myslím, že tam bude zakopanej pes.
PAVEL PROCHAZKA.zde.cz
Profil *
Casero
takto:


function generate_string ($delka){

$sBuffer="";
for($x = 0; $x < $delka; $x++){
switch (round(rand(1, 3))){
case "1";
$sBuffer = $sBuffer.chr(round(rand(49, 57)));
break;
case "2";
$sBuffer = $sBuffer.chr(round(rand(65, 90)));
break;
case "3";
$sBuffer = $sBuffer.chr(round(rand(97, 122)));
break;
}
}
return trim($sBuffer);
}


a volam takto:



define("DefaultLengthPassword", "8");
$heslo = generate_string(DefaultLengthPassword);
PAVEL PROCHAZKA.zde.cz
Profil *
Uz jsem snad vyskousel vsechno, tedka jeste heslo obaluji funkci TRIM, kdyby nahodou se vyskytly nejake nechtene znaky. Az po teto uprave pracuji s promennou. Zajimave je ze presne stejne heslo ulozim do databaze ale mezitim ji prozenu jeste kodovanim:

function Password($heslo, $salt){

return (SHA1(trim($heslo).trim($salt)));
}


sela aplikace vypada takto:


list($email,$prezdivka,$registracedokoncena) = mysql_fetch_row($dotaz_login);

$salt = generate_string(GenerateSaltLength);
$heslo = generate_string(DefaultLengthPassword);
$password = Password($heslo,$salt);
$datum = hGetDate();
//echo "heslo: ".$heslo."<br>";
$rnt = mysql_query ("update $nazev_tabulky set pripomenuto = '$datum', heslo='$password', salt='$salt' WHERE id='$id'", $GLOBALS["link"]);
if ($rnt <> false){
$year = date('Y');
$telo = '<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=windows-1250">
<title>Přihlašovací údaje pro www.prochazka.zde.cz</title>
</head>
<body>
<table CELLSPACING="10"><tr ALIGN="left"><td><IMG SRC="http://www.prochazka.d2.cz/gif/logo.gif"></td></tr>
<tr><td>Údaje o vašem účtu jsou následující: </td></tr>'."
<tr><td>&nbsp;</td></tr>
<tr><td>--------------------------------------------</td></tr>
<tr><td>Login: <b>$prezdivka</b></td></tr>
<tr><td>Heslo: <b>$heslo</b></td></tr>
<tr><td>--------------------------------------------</td></tr>
<tr><td>&nbsp;</td></tr>".'
<tr><td>&nbsp;</td></tr>
<tr><td>Všechny informace jsou zahrnuty pod GPL licenci, pokud není explicitně uveden jiný typ licence. </td></tr>
<tr><td>Používání těchto stránek ke komerčním účelům lze jen se souhlasem autora.</td></tr>
<tr><td>Všechna práva vyhrazena (c) 2000 - '."$year".' HaCeSOFT. </td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>Vás web <a href="http://www.prochazka.zde.cz">www.prochazka.zde.cz</a></td></tr>
</table>
</body>
</html>';
$subject ="Přihlašovací údaje k www.prochazka.zde.cz";
Posly_Email($telo,$email,$subject);


si muzete vsimnout zakomentovaneho vypisu promenne heslo. Taj sem prisel na to ze to mrsi funkce pro odesilani emailu.....
Ale Proc to zmrsi jen to heslo a ne vsechno ostatni, to je me zahadou.....
PAVEL PROCHAZKA.zde.cz
Profil *
No a jako posledni je kompletni funkce pro odesilani:



function Posly_Email($telo,$email,$subject){
$hlavicky = header_emailu();
$subject = charset_predmet($subject);
$telo = code_email($telo);
$bRnt = Validace_Emailu($email);
if ($bRnt ==true){
mail($email, $subject, $telo, $hlavicky);
}
}


function code_email ($telo){
$telo = StrTr($telo, "x8Ax8Dx8Ex9Ax9Dx9E", "xA9xABxAExB9xBBxBE");
$telo = Base64_Encode($telo);
return ($telo);
}
function charset_predmet($subject){
$subject = "=?windows-1250?B?".base64_encode("$subject")."?=";
return ($subject);
}

function header_emailu (){
$hlavicky = "MIME-Version: 1.0 ". " ";
$hlavicky .= 'Content-Type: text/html; charset="windows-1250"'. " ";
$hlavicky .= "Content-Transfer-Encoding: base64 ". " ";
$hlavicky .= 'From: Admin Webu Prochazka.zde.cz <hacesoft@mujmail.cz>' . " ";
$hlavicky .= 'Reply-To: Admin Webu Prochazka.zde.cz <hacesoft@mujmail.cz>' . " ";
$hlavicky .= "X-Sender: Admin Webu Prochazka.zde.cz <hacesoft@mujmail.cz> "; // odesilatel
$hlavicky .= "X-Mailer: PES.cz "; // odesílající klient
$hlavicky .= "X-Priority: 1 "; //1 urgentní priorita, 3 normální priorita
$hlavicky .= "Return-Path: Admin Webu Prochazka.zde.cz <hacesoft@mujmail.cz> "; // návratová adresa pro chyby
return ($hlavicky);
}

to je vsechno. At hledam jak hledam nic tam zavadneho neni.....
Casero
Profil
PAVEL PROCHAZKA.zde.cz
Nechápu fci code_email(), ale je jasný, že tu výměnu znaků dělá ona. Viz.napriklad ksy mam heslo: kgwWz8Dy, tak ma prijde: kgwWzABy
$telo = StrTr($telo, "x8Ax8Dx8Ex9Ax9Dx9E", "xA9xABxAExB9xBBxBE");
PAVEL PROCHAZKA.zde.cz
Profil *
Casero to ma taky tedka napado taky... tu funkci jsem stahnou odnekud z internetu, melo by to bejt prekodovani z jedneho kodovaciho systemu do druheho. konkterne z UTF-8 do WINDOWS-1250... Predpokladal jsem ze to jsou hexa cisla...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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