AveoSS
05.03.2010, 14:19
Здравствуйте,есть форма восстановления пароля
с примерно таким кодом
{literal}
<script language=javascript>
function checkform() {
if (document.forgotform.email.value == '') {
alert("Введите ваше имя пользователя или email!");
document.forgotform.email.focus();
return false;
}
return true;
}
</script>
{/literal}
<h3>Восстановление пароля :</h3><br>
<form method=post name=forgotform onsubmit="return checkform();">
<input type=hidden name=a value="forgot_password">
<input type=hidden name=action value="forgot_password">
<table cellspacing=0 cellpadding=2 border=0>
<tr>
<td>Введите ваше имя пользователя или email!</td>
<td><input type=text name='email' value="" class=inpts size=30></td>
</tr>
<tr>
<td> </td>
<td><input type=submit value="Напомнить" class=sbmt></td>
</tr>
</table>
</form><br><br>
{if $found_records == 0}
Такой счет не существует
{elseif $found_records > 0}
Вход и пароль высланы Вам. Пожалуйста проверьте вашу эл.почту.
{/if}
вот еще forgoten_password.inc
$found_records = -1;
if ($frm['action'] == 'forgot_password')
{
$found_records = 0;
$email = quote ($frm['email']);
$q = '' . 'select * from hm2_users where username=\'' . $email . '\' or email=\'' . $email . '\' and (status=\'on\' or status=\'suspended\')';
if (!($sth = mysql_query ($q)))
{
exit (mysql_error ());
;
}
while ($row = mysql_fetch_array ($sth))
{
if (($settings['demomode'] == 1 AND $row['id'] <= 3))
{
}
else
{
if ($row['activation_code'] != '')
{
$info = array ();
$info['activation_code'] = $row['activation_code'];
$info['username'] = $row['username'];
$info['name'] = $row['name'];
$info['ip'] = '[not logged]';
$info['max_tries'] = $settings['brute_force_max_tries'];
send_mail ('brute_force_activation', $row['email'], $settings['system_email'], $info);
}
$password = gen_confirm_code (8, 0);
$enc_password = md5 ($password);
$q = '' . 'update hm2_users set password = \'' . $enc_password . '\' where id = ' . $row['id'];
if (!($sth1 = mysql_query ($q)))
{
exit (mysql_error ());
;
}
if ($settings['store_uncrypted_password'] == 1)
{
$pswd = quote ($password);
$q = '' . 'update hm2_users set pswd = \'' . $pswd . '\' where id = ' . $row['id'];
if (!($sth1 = mysql_query ($q)))
{
exit (mysql_error ());
;
}
}
$info = array ();
$info['username'] = $row['username'];
$info['password'] = $password;
$info['name'] = $row['name'];
$info['ip'] = $frm_env['REMOTE_ADDR'];
send_mail ('forgot_password', $row['email'], $settings['system_email'], $info);
}
$found_records = 1;
}
}
$smarty->assign ('found_records', $found_records);
$smarty->display ('forgot_password.tpl');
?>
Как взломщику удается отправлять пароль не только на почту админа но и себе???
с примерно таким кодом
{literal}
<script language=javascript>
function checkform() {
if (document.forgotform.email.value == '') {
alert("Введите ваше имя пользователя или email!");
document.forgotform.email.focus();
return false;
}
return true;
}
</script>
{/literal}
<h3>Восстановление пароля :</h3><br>
<form method=post name=forgotform onsubmit="return checkform();">
<input type=hidden name=a value="forgot_password">
<input type=hidden name=action value="forgot_password">
<table cellspacing=0 cellpadding=2 border=0>
<tr>
<td>Введите ваше имя пользователя или email!</td>
<td><input type=text name='email' value="" class=inpts size=30></td>
</tr>
<tr>
<td> </td>
<td><input type=submit value="Напомнить" class=sbmt></td>
</tr>
</table>
</form><br><br>
{if $found_records == 0}
Такой счет не существует
{elseif $found_records > 0}
Вход и пароль высланы Вам. Пожалуйста проверьте вашу эл.почту.
{/if}
вот еще forgoten_password.inc
$found_records = -1;
if ($frm['action'] == 'forgot_password')
{
$found_records = 0;
$email = quote ($frm['email']);
$q = '' . 'select * from hm2_users where username=\'' . $email . '\' or email=\'' . $email . '\' and (status=\'on\' or status=\'suspended\')';
if (!($sth = mysql_query ($q)))
{
exit (mysql_error ());
;
}
while ($row = mysql_fetch_array ($sth))
{
if (($settings['demomode'] == 1 AND $row['id'] <= 3))
{
}
else
{
if ($row['activation_code'] != '')
{
$info = array ();
$info['activation_code'] = $row['activation_code'];
$info['username'] = $row['username'];
$info['name'] = $row['name'];
$info['ip'] = '[not logged]';
$info['max_tries'] = $settings['brute_force_max_tries'];
send_mail ('brute_force_activation', $row['email'], $settings['system_email'], $info);
}
$password = gen_confirm_code (8, 0);
$enc_password = md5 ($password);
$q = '' . 'update hm2_users set password = \'' . $enc_password . '\' where id = ' . $row['id'];
if (!($sth1 = mysql_query ($q)))
{
exit (mysql_error ());
;
}
if ($settings['store_uncrypted_password'] == 1)
{
$pswd = quote ($password);
$q = '' . 'update hm2_users set pswd = \'' . $pswd . '\' where id = ' . $row['id'];
if (!($sth1 = mysql_query ($q)))
{
exit (mysql_error ());
;
}
}
$info = array ();
$info['username'] = $row['username'];
$info['password'] = $password;
$info['name'] = $row['name'];
$info['ip'] = $frm_env['REMOTE_ADDR'];
send_mail ('forgot_password', $row['email'], $settings['system_email'], $info);
}
$found_records = 1;
}
}
$smarty->assign ('found_records', $found_records);
$smarty->display ('forgot_password.tpl');
?>
Как взломщику удается отправлять пароль не только на почту админа но и себе???