fktrctq
Местный
- Сообщения
- 62
- Реакции
- 1
Всем привет! Вот такое дело, сканер выдет дыру, ну я исправляю, НО!!! Платежный пароль после исправления не ставится. В чем дело? почему так? ПОМОГИТЕ!!!
вот сам код:
вот сам код:
Код:
<?PHP
$_OPTIMIZATION["title"] = "Настройки";
$usid = $_SESSION["user_id"];
$uname = $_SESSION["user"];
$db->Query("SELECT * FROM db_users_a WHERE id = '$usid'");
$user_data = $db->FetchArray();
$cosh = $user_data["payeer"];
?>
<div class="s-bk-lf">
<div class="acc-title">Настройки</div>
</div>
<div class="silver-bk">
<div class="clr"></div>
<div style="text-align: center;"><font color="4A388E">Смена пароля:</font></b></div>
<BR />
<?PHP
if(isset($_POST["old"])){
$old_pass = $func->IsPassword($_POST["old"]);
$new_pass = $func->IsPassword($_POST["new"]);
$old = $func->md5Password($old_pass);
$new = $func->md5Password($new_pass);
if($old !== false AND strtolower($old) == strtolower($user_data["pass"])){
if($new !== false){
if( strtolower($new_pass) == strtolower($_POST["re_new"])){
$db->Query("UPDATE db_users_a SET pass = '$new' WHERE id = '$usid'");
$db->Query("SELECT * FROM db_users_a WHERE id = '$usid'");
$user_data = $db->FetchArray();
# Отправляем пароль
$sender = new isender;
$sender -> SetNewPassword($user_data["email"], $user_data["pass"], $user_data["email"]);
echo "<center><font color = 'green'><b>Пароль изменен! </b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Пароль и повтор пароля не совпадают!</b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Новый пароль имеет неверный формат!</b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Старый пароль заполнен неверно!</b></font></center><BR />";
}
?>
<form action="" method="post">
<table width="330" border="0" align="center">
<tr>
<td><b><font color="black">Старый пароль:</b></td>
<td align="center"><input type="password" maxlength="20" class="ps_r" style="text-align: center" name="old" /></td>
</tr>
<tr>
<td><b><font color="black">Новый пароль:</b></td>
<td align="center"><input type="password" maxlength="20" class="ps_r" style="text-align: center" name="new" /></td>
</tr>
<tr>
<td><b><font color="black">Повтор пароля:</b></td>
<td align="center"><input type="password" maxlength="20" class="ps_r" style="text-align: center" name="re_new" /></td>
</tr>
<tr>
<td align="center" colspan="2"><BR /><input type="submit" value="Сменить пароль" class="butgame"/></td>
</tr>
</table>
</form>
<div style="text-align: center; "><font color = 'purple'>Пароль должен содержать от 6 до 20 символов (только англ. символы)</div>
<br>
<BR />
<BR />
<div style="text-align: center;"><font color="4A388E">Платежный пароль:</font></div>
<BR />
<?php
if(isset($_POST["plat_pass"])){
function plat_passs($plat_passs){
if(!preg_match("/^[0-9]{4}$/", $plat_passs)) return false;
return $plat_passs;
}
$plat_passs = plat_passs($_POST["plat_pass"]);
$plat = $plat_passs;
if($plat_passs !== false){
$db->Query("UPDATE db_users_a SET plat_pass = '".mysql_real_escape_string($plat)."' WHERE id = '$usid'");
echo "<center><font color = '4A388E'><b>Платежный пароль установлен!</b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Платежный пароль имеет неверный формат!</b></font></center><BR />";
}
?>
<?php
if($user_data['plat_pass'] != 0) {
echo "<center><font color = '4A388E'><b>Платежный пароль уже установлен!</b></font></center><BR />";
} else {
?>
<form action="" method="post">
<table width="330" border="0" align="center">
<tr>
<td><b><font color="black">Введите пароль (обязательно):</b></td>
<td align="center"><input type="text" maxlength="4" class="ps_plat" style="text-align: center" name="plat_pass" /></td>
</tr>
<tr>
<td align="center" colspan="2"><BR /><input type="submit" value="Установить" class="butgame"/></td>
</tr>
</table>
</form>
<div style="text-align: center;"><font color = 'purple'>Платежный пароль должен состоять только из цифр и не длиннее 4-х символов!</div>
<?php } ?>
<BR />
<BR /><BR />
<div style="text-align: center; "><font color="4A388E">Привязка кошелька:</font></div>
<BR />
<?php
if($user_data['payeer'] == "0") {
?>
<?php
function ViewPurse($purse){
if( substr($purse,0,1) != "P" ) return false;
if( !preg_match("/^[0-9]{7,8}$/", substr($purse,1)) ) return false;
return $purse;
}
if(isset($_POST["purse"])){
$purse = ViewPurse($_POST["purse"]);
if($purse !== false){
$db->Query("SELECT COUNT(*) FROM db_users_a WHERE payeer = '$purse'");
if($db->FetchRow() == 0){
$db->Query("UPDATE db_users_a SET payeer = '$purse' WHERE id = '$usid'");
echo "<center><font color = 'green'><b>Вы успешно привязали кошелек!</b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Указанный кошелек уже используется!</b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Номер кошелька имеет неверный формат!</b></font></center><BR />";
}
?>
<form action="" method="post">
<table width="360" border="0" align="center">
<tr>
<td><b><font color="black">Кошелек Payeer: (начинается с Р)</b></td>
<td align="center"><input type="text" maxlength="9" class="ps_r" style="text-align: center" name="purse" /></td>
</tr>
<tr>
<td align="center" colspan="2"><BR /><input type="submit" value="Привязать" class="butgame"/></td>
</tr>
</table>
</form>
<div style="text-align: center;"><font color = 'purple'>Номер кошелька должен состоять только из буквы P и 7 или 8 цифр!</div>
<BR />
<?php
}else echo "<center><font color = '4A388E'><b>Кошелек Payeer уже привязан!</b></font><BR /><BR /><font color = 'black'>{$cosh}</font></center><BR />";
?>
<div class="clr"></div>
</div>
nicehash
Местный
- Сообщения
- 40
- Реакции
- 5
попробуйте это
Код:
if(isset($_POST["plat_pass"])){
function plat_passs($plat_passs){
if(!preg_match("/^[0-9]{4}$/", $plat_passs)) return false;
return $plat_passs;
}
$plat_passs = plat_passs($_POST["plat_pass"]);
$plat_pass = ($plat_passs);
if($plat_passs !== false){
$db->Query("UPDATE db_users_a SET plat_pass = '$plat_pass' WHERE id = '$usid'");
echo "<center><font color = '4A388E'><b>Платежный пароль установлен!</b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Платежный пароль имеет неверный формат!</b></font></center><BR />";
}
fktrctq
Местный
- Сообщения
- 62
- Реакции
- 1
поробовал, сканер показывает, что теперь нет иньекции, но плат пароль не ставитсяnicehash написал(а):попробуйте это
Код:if(isset($_POST["plat_pass"])){ function plat_passs($plat_passs){ if(!preg_match("/^[0-9]{4}$/", $plat_passs)) return false; return $plat_passs; } $plat_passs = plat_passs($_POST["plat_pass"]); $plat_pass = ($plat_passs); if($plat_passs !== false){ $db->Query("UPDATE db_users_a SET plat_pass = '$plat_pass' WHERE id = '$usid'"); echo "<center><font color = '4A388E'><b>Платежный пароль установлен!</b></font></center><BR />"; }else echo "<center><font color = 'red'><b>Платежный пароль имеет неверный формат!</b></font></center><BR />"; }
nicehash
Местный
- Сообщения
- 40
- Реакции
- 5
fktrctq
Местный
- Сообщения
- 62
- Реакции
- 1
осталю тот же код, который работает, вроде сканер ошибка, т.к. айболит не ругаетсяnicehash написал(а):вы проверяли может проблема с базой?
sanek21012009
Участник
- Сообщения
- 18
- Реакции
- 0
fktrctq
Местный
- Сообщения
- 62
- Реакции
- 1
http://find-xss.net/sanek21012009 написал(а):а где такой сканер можно взять
Remdev
Участник
- Сообщения
- 77
- Реакции
- 19
Во-первых, тут нет инъекции, так как регулярка отлично проверяет, чтоб платёжный пароль состоял только из цифр и был длинной 4.
Просто сканер не работает так хорошо, как человек(но всё равно сойдёт)
Во-вторых, если хочешь всё-таки фильтровать, то вместо mysql_real_escape_string используй $db->escape
Просто сканер не работает так хорошо, как человек(но всё равно сойдёт)
Во-вторых, если хочешь всё-таки фильтровать, то вместо mysql_real_escape_string используй $db->escape
BURS
Участник
- Сообщения
- 116
- Реакции
- 6
Remdev
Участник
- Сообщения
- 77
- Реакции
- 19
Это в админке. Если кто-то попадёт в админку, там и sql-inj не нужна будетBURS написал(а):парни есть угроза влома О_о?
BURS
Участник
- Сообщения
- 116
- Реакции
- 6
как подправить подскажи пожалуйстаRemdev написал(а):Это в админке. Если кто-то попадёт в админку, там и sql-inj не нужна будет
Remdev
Участник
- Сообщения
- 77
- Реакции
- 19
BURS
Участник
- Сообщения
- 116
- Реакции
- 6
не знаю еще не подключал платежиRemdev написал(а):Экранируй данные тупым способом(mysql_real_escape_string) или фильтруй в зависимости от контекста.
Не видя код исходного файла пофиксить не сильно получится.
p.s. А у тебя файл statvivod.php работает? А то запрос выглядит некорректным