|
|
|
| Здравствуйте, вот пишу свою первую систему администрирования, хотелось бы узнать есть ли в ниже приведенном коде системы авторизации какие-либо недочеты, ошибки, "дырки":
<?@session_start();?>
<?
function to_sql($str,$size)
{
$str=trim($str);
$str=substr($str,0,$size);
$str=htmlspecialchars(stripslashes($str));
$str=str_replace("'","'",$str);
if(!get_magic_quotes_gpc())
{
$str=mysql_escape_string($str);
}
else
{
$str=$str;
}
return $str;
}?>
///////////////////////////////////
<?
$main="Goldfish";
//Windows \r\n
//Unix \n
$os="\r\n";
$admin_login="Alex";
$admin_pass="123";
//параметры БД
$host_db="localhost";
$user_db="alex";
$pass_db="123";
$name_db="news";
if(!mysql_connect($host_db,$user_db,$pass_db))
{
echo "Соединение с базой не установлено - дальнейшая работа невозможна<br>";
exit;
}
if(!mysql_select_db($name_db))
{
echo "Необходимая БД не выбрана - дальнейшая работа невозможна<br>";
exit;
}
?>
<?
if(isset($_POST["username"],$_POST["password"]) && !empty($_POST["username"]) && !empty($_POST["password"]))
{
$username=to_sql($_POST["username"],15);
$password=to_sql($_POST["password"],15);
if($username==$admin_login && $password==$admin_pass)
{
session_register("username","password");
echo "<b>Подождите...</b>";
echo "<meta http-equiv=\"refresh\" content=\"1;url=admin.php\">";
}
else
{
session_destroy();
echo("Неверная комбинация логина/пароля");
echo "<meta http-equiv=\"refresh\" content=\"1;url=index.php\">";
}
}
else
{
session_destroy();
echo("Доступ запрещен");
echo "<meta http-equiv=\"refresh\" content=\"1;url=index.php\">";
}
?>
|
| |
|
|
|
|
|
|
|
для: Alexneo
(06.09.2005 в 19:40)
| | Хм... а что-то нигде не видно функции mysql_query()? Такое ощущение, что SQL-запрос вообще нигде не выполняется... | |
|
|
|
|
|
|
|
для: cheops
(06.09.2005 в 19:59)
| | В этом файле SQL и правда не выполняются, а соединение с БД устанавливается потому что я конфигурационные файлы и файл enter.php соединил в один и выложил сюда, сверка производится с $admin_login $admin_pass. Кроме этого какие нибудь недочеты и дыры есть? | |
|
|
|
|
|
|
|
для: Alexneo
(07.09.2005 в 04:50)
| | Хм... если запросы не выполняются, то очевидных дыр нет... так как все переменные иницированы, а как попадают переменные с паролем и логином в скрипт - ведь они же не жёстко прописаны в код? | |
|
|
|
|
|
|
|
для: cheops
(06.09.2005 в 19:59)
| | Жестко прописаны, дело в том что необходим доступ только одному человеку к админовке. | |
|
|
|
|
|
|
|
для: Alexneo
(07.09.2005 в 22:11)
| | Тогда не понятно зачем все приготовления с защитой от SQL-инъекций... это может здорово сбить с толку сопровождающего код разработчика. | |
|
|
|
|
|
|
|
для: cheops
(08.09.2005 в 02:11)
| | А сама функция to_sql написана хорошо? Учтены все моменты для предупреждения взлома? | |
|
|
|
|
|
|
|
для: Alexneo
(09.09.2005 в 05:18)
| | Да, от SQL-инъекции всё защищено хорошо, даже лишку, только блок
<?php
else
{
$str=$str;
}
?>
|
лишний и реальной пользы без использования MySQL такая защита не приносит, а код усложняет. | |
|
|
|