[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Форма админа
lawbreaker
всем дороф
я написал форму для логина админа...
PHP
<?php
session_start
();
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['admin'] = "0";
$_SESSION['password'] = "0";


echo 
"<center>";
echo 
"<form action=index2.php?act=1 method=POST>";
echo 
"Login:<br><input type=text name=admin><br>";
echo 
"Password:<br><input type=text name=password><br>";
echo 
"<input type=submit name=sub value=Administate it!>";
echo 
"</form>";
echo 
"</center><hr noshade color=orange>";

$act = isset($_GET['act']);
    if (
$act)
    {
        if (
$act == "1")
        {
            if (
$_POST['sub'])
            {
                
$admin mysql_escape_string(trim(strip_tags($_POST['admin'])));
                
$password mysql_escape_string(trim(strip_tags($_POST['password'])));
                if (
$admin !== "" AND $password !== "")
                {
                    if (
$admin == "genius.andrey" AND $password == "parol")
                    {
                    
$_SESSION['admin'] = $admin;
                    
$_SESSION['password'] = md5($password);
                    echo 
"<font color=green>Sie habe sich erfolgreich eingeloggt</font><br>";
                    echo 
"<a href=adminpanel.php>Zur Adminpanel</a>";
                    }else{
                    echo 
"<font color=red>Admin-Name und/oder Password ist.sind falsch.</font>";
                    }
                }
            }
        }
    }



код работает

скажыте где есть какието уязвимости или что нудно делать подругому?
спс



Спустя 34 минуты, 47 секунд (23.07.2009 - 17:14) _CaXaP_ написал(а):
Не знаю какие тут могут быть уязвимости, учитывая что нет работы ни с базой данных, ни с файлами...

для пароля обычно используют <input type='password'>

А насчёт кода - имхо, даже много лишнего.

if ($_POST['sub']) - думаю, лишнее, поскольку и так идёт проверка на поля admin и password. Т.е. мне кажется стоит оставить или sub, или act, но не их обоих.

PHP
$admin mysql_escape_string(trim(strip_tags($_POST['admin'])));
$password mysql_escape_string(trim(strip_tags($_POST['password'])));

Эти 2 строки тоже, думаю, лишние, потому что функция mysql_escape_string используется для защиты от sql инъекций (а в Вашем случае работы с базой данных нет), а strip_tags для защиты от вставки скриптов на страницу (чего у Вас также нет).

Поэтому, имхо, достаточно просто проверок:
PHP
if ($admin !== "" AND $password !== "")

и
PHP
if ($admin == "genius.andrey" AND $password == "parol")


Пароль заносить в сессию также не нужно (ибо на сайте он нигде не понадобится). Достаточно просто факта, что пользователь зашёл.

Может кто из Экспертов меня поправит smile.gif

Спустя 10 минут, 54 секунды (23.07.2009 - 17:24) Nikitian написал(а):
PHP
$act = isset($_GET['act']);
    if (
$act)
    {
        if (
$act == "1")
        {
            if (
$_POST['sub'])
            {
                
$admin mysql_escape_string(trim(strip_tags($_POST['admin'])));
                
$password mysql_escape_string(trim(strip_tags($_POST['password'])));
                if (
$admin !== "" AND $password !== "")
                {

Можно заменить на
PHP
$admin mysql_escape_string(trim(strip_tags($_POST['admin'])));
$password mysql_escape_string(trim(strip_tags($_POST['password'])));
if(!empty(
$_GET['act']) && $_GET['act']==&& $_POST['sub'] && $admin !== "" AND $password !== "")


И не понимаю смысла хранить в сессии пароль, тем более зашифрованный. Это примерно то же самое, что хранить в правом кармане 3 яблока, а в левом записку, что в правом кармане именно 3 яблока. =))

И здесь увидел только авторизацию, но нет проверки авторизации, хотя там всего 1 условие должно быть:
PHP
if(!empty($_SESSION['admin']))

Спустя 2 минуты, 13 секунд (23.07.2009 - 17:27) Kuliev написал(а):
lawbreaker
Бредовая конструкция.
PHP
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['admin'] = "0";
$_SESSION['password'] = "0";


вот так лучше будет
PHP
if ($admin == "genius.andrey" AND $password == "parol")
{
    
$_SESSION['user'] = 1;

}


Вот как то так, а потом проверяй чему равна сессия!

Спустя 3 часа, 28 минут, 13 секунд (23.07.2009 - 20:55) lawbreaker написал(а):
_CaXaP_
название данной темы Форма Админа

для етого не требуется работы с базой данных, только в том случае когда я захочу чтолибо отредактировать.
Kuliev
спасибо

Спустя 14 минут, 38 секунд (23.07.2009 - 21:10) sergeiss написал(а):
Цитата (lawbreaker @ 23.07.2009 - 17:39)

$act = isset($_GET['act']);
if ($act)
{
if ($act == "1")

А это что такое??? Это называется "масло масляное". Потому что $act будет логической величиной. Сравнение if( $act ) и if( $act == "1" ) дадут одно и то же. Вложенность этих 2-х проверок не нужна!!!
Или ты хотел назначить в $act величину, переданную в ГЕТе???


_____________
Я Андрей и мне 14 лет :)
И ни как не дождусь когда HardWoman меня удалит
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.