|
|
|
| Всем Здрасти!
Вот такая штука, помогите исследовать код на sql-инъекцию или другие баги.
Спасибо.
<?
error_reporting(0);
include ("../setup.php");
$resultg=mysql_query("select * from seting ");
$rog=mysql_fetch_array($resultg);
$Users = array($rog[0] => $rog[1]);
session_start();
session_register("SESSION");
if (! isset($SESSION)) {
$SESSION = array();
}
if($event=='exit') {
unset ($SESSION["password"]);
unset ($SESSION["username"]);
}
if($enter) {
$SESSION["username"] = $user;
$SESSION["password"] = $passw;
}
$username = $SESSION["username"];
$password = $SESSION["password"];
$dd = array_search($password, $Users);
?>
<style type=text/css>
input { FONT-FAMILY: MS Sans Serif; FONT-SIZE: 10px; }
select { FONT-FAMILY: MS Sans Serif; FONT-SIZE: 10px; }
a:hover { color: #86869B }
a:visited { color: navy }
a { color: navy }
a:active { color: #ff0000 }
body { FONT-FAMILY: Times New Roman; FONT-SIZE: 13pt; COLOR: #1F1F1F; }
</style>
<? if (empty($password) or $dd !== $username) { ?>
<center>
<form action="<?=$PHP_SELF?>" method="post">
<p> </p>
<h3 style="color:green"><font face="Verdana" color="#FF0033"> Вход для администратора</font><font face="Verdana" color="maroon"></font><font face="Verdana"></font></h3>
<table align="center" border="0" height="124">
<tr>
<td align="center" colspan="2"> </td>
</tr>
<tr>
<td align="right"><font face="Verdana">Логин:</font></td>
<td><font face="Verdana"><input type="text" name="user" size="22"></font></td>
</tr>
<tr>
<td align="right"><font face="Verdana">Пароль:</font></td>
<td><font face="Verdana"><input type="password" name="passw" size="22"></font></td>
</tr>
<tr>
<td align="right"></td>
<td><font face="Verdana"><input type="submit" value="Войти" name="enter">
</font>
</td>
</tr>
<tr>
<td align="right" colspan="2">
</td>
</tr>
</table>
</form>
<?
die();
}
?>
|
| |
|
|
|
|
|
|
|
для: tokmak
(02.04.2008 в 00:19)
| | Конкретно в этом коде нет и не может быть SQL Injection'ов, потому что тут встерчается только один запрос, который не формируется с учетом параметров, переданных от пользователя. | |
|
|
|
|
|
|
|
для: Atheist
(02.04.2008 в 00:24)
| | Т.е. в данном коде нету багов, и его можно смело использовать? | |
|
|
|
|
|
|
|
для: tokmak
(02.04.2008 в 00:27)
| | > Т.е. в данном коде нету багов
Отсутствие уязвимостей еще не говорит о том, что нет багов. Данный код сделан неправильно. | |
|
|
|
|
|
|
|
для: Atheist
(02.04.2008 в 00:49)
| | А вы не могли бы сказать в чем именно не правильность? | |
|
|
|
|
|
|
|
для: tokmak
(02.04.2008 в 01:30)
| | Как минимум:
> $rog=mysql_fetch_array($resultg);
> $Users = array($rog[0] => $rog[1]);
Это ты получишь только первый попавшийся в таблице аккаунт, а не всю таблицу. Это при условии, что там вообще что-то есть, иначе будут ошибки.
> $dd = array_search($password, $Users);
Так дела не делают. Раз уж хранишь в базе данных, так и ищи с помощью её инструментов.
> if($event=='exit')
Что за $event? Откуда? Можно, конечно, предположить, что эта переменная определяется в "setup.php", но я в этом сомневаюсь. Скорее, это попытка писать под register_globals = "on", который, к счастью, в дальнейшем будет исключен из ядра.
> if($enter) {
> $SESSION["username"] = $user;
> $SESSION["password"] = $passw;
> }
Аналогично. $enter, $user, $passw не определены.
> <?=$PHP_SELF?>
И это: $_SERVER['PHP_SELF']
> session_register("SESSION");
> $SESSION ...
Всё это старый стиль. Сейчас уже давно используют $_SESSION и session_register() не нужна.
> die();
Скажи, а зачем die в конце кода? | |
|
|
|
|
|
|
|
для: Atheist
(02.04.2008 в 01:56)
| | >> die();
>Скажи, а зачем die в конце кода?
ЧТО БЫ СКРИПТ УМЕР!!! =) | |
|
|
|