Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Защита
 
 автор: JESS   (16.04.2009 в 04:53)   письмо автору
 
 

Добрый вечер!
У меня есть вопрос на тему защиты авторизации, как и на сколько она защищена, и что можно переправить.

index.php

<?php
session_start
();
include (
'mysql.php');

if (!isset(
$_SESSION['id']))
{
    if (isset(
$_COOKIE['login']) && isset($_COOKIE['password']))
    {
        
$login mysql_escape_string($_COOKIE['login']);
        
$password mysql_escape_string($_COOKIE['password']);
        
$query "SELECT `id`
                    FROM `users`
                    WHERE `login`='
{$login}' AND `password`='{$password}'
                    LIMIT 1"
;
        
$sql mysql_query($query) or die(mysql_error());

        if (
mysql_num_rows($sql) == 1)
        {
            
$row mysql_fetch_assoc($sql);
            
$_SESSION['user_id'] = $row['id'];
        }
    }
}

if (isset(
$_SESSION['user_id']))
{
    
$query "SELECT `login`
                FROM `users`
                WHERE `id`='
{$_SESSION['user_id']}'
                LIMIT 1"
;
    
$sql mysql_query($query) or die(mysql_error());

    if (
mysql_num_rows($sql) != 1)
    {
        
header('Location: login.php?logout');
        exit;
    }

    
$row mysql_fetch_assoc($sql);

    
$welcome $row['login'];
}
else
{
    
$welcome 'text';
}

print 
'<h3>You are inloga as:, ' $welcome '.</h3>

<a href="closed.php">Logout</a><br />'
;


if (!isset(
$_SESSION['user_id']))
{
    print 
'<a href="login.php">Login</a><br />';
    print 
'<a href="register.php">Register</a><br />';
}
else
{
    print 
'<a href="login.php?logout">Logout</a><br />';
}

?>

mysql.php

<?php
    mysql_connect
("localhost""root""") or die (mysql_error());
    
mysql_select_db("pass") or die (mysql_error());

    
mysql_query("set character_set_client    ='swe7_bin'");
    
mysql_query("set character_set_results    ='swe7_bin'");
    
mysql_query("set collation_connection    ='utf8_swedish_ci'");

    function 
slashes(&$el)
    {
        if (
is_array($el))
            foreach(
$el as $k=>$v)
                
slashes($el[$k]);
        else 
$el stripslashes($el);
    }

    if (
ini_get('magic_quotes_gpc'))
    {
        
slashes($_GET);
        
slashes($_POST);
        
slashes($_COOKIE);
    }
?>


login.php

<?php
session_start
();

include (
'mysql.php');

if (isset(
$_GET['logout']))
{
    if (isset(
$_SESSION['user_id']))
        unset(
$_SESSION['user_id']);

    
setcookie('login'''0"/");
    
setcookie('password'''0"/");
    
header('Location: index.php');
    exit;
}

if (isset(
$_SESSION['user_id']))
{
    
header('Location: add_cats.php');
    exit;
}

if (!empty(
$_POST))
{
    
$login = (isset($_POST['login'])) ? mysql_real_escape_string($_POST['login']) : '';

    
$query "SELECT `salt`
                FROM `users`
                WHERE `login`='
{$login}'
                LIMIT 1"
;
    
$sql mysql_query($query) or die(mysql_error());

    if (
mysql_num_rows($sql) == 1)
    {
        
$row mysql_fetch_assoc($sql);        
        
$salt $row['salt'];
        
$password md5(md5($_POST['password']) . $salt);
        
$query "SELECT `id`
                    FROM `users`
                    WHERE `login`='
{$login}' AND `password`='{$password}'
                    LIMIT 1"
;
        
$sql mysql_query($query) or die(mysql_error());
        if (
mysql_num_rows($sql) == 1)
        {
            
$row mysql_fetch_assoc($sql);
            
$_SESSION['user_id'] = $row['id'];

            
$time 86400;

            if (isset(
$_POST['remember']))
            {
                
setcookie('login'$logintime()+$time"/");
                
setcookie('password'$passwordtime()+$time"/");
            }

            
header('Location: add_cats.php');
            exit;
            }
            
        else
        {
            die(
'Error!. — <a href="login.php">Du m&#229;ste logga in!</a>');
        }
    }
    else
    {
        die(
'Error!. — <a href="login.php">Du m&#229;ste logga in!</a>');
    }
}

print 
'
<form action="login.php" method="post">
    <table>
        <tr>
            <td>Namn:</td>
            <td><input type="text" name="login" /></td>
        </tr>
        <tr>
            <td>L&#246;senord:</td>
            <td><input type="password" name="password" /></td>
        </tr>
        <tr>
            <td>Kom ih&#229;g mig:</td>
            <td><input type="checkbox" name="remember" /></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="Logga in" /></td>
        </tr>
    </table>
</form>
'
;
?>

  Ответить  
 
 автор: Trianon   (16.04.2009 в 08:05)   письмо автору
 
   для: JESS   (16.04.2009 в 04:53)
 

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

  Ответить  
 
 автор: JESS   (17.04.2009 в 00:20)   письмо автору
 
   для: Trianon   (16.04.2009 в 08:05)
 

Всмысле новую тему сделать с исправленным текстом, или как?

  Ответить  
 
 автор: Trianon   (17.04.2009 в 08:56)   письмо автору
 
   для: JESS   (17.04.2009 в 00:20)
 

либо новую либо поправьте по этой ссылке

  Ответить  
 
 автор: JESS   (20.04.2009 в 21:33)   письмо автору
 
   для: Trianon   (17.04.2009 в 08:56)
 

Все переделал)))

  Ответить  
 
 автор: JESS   (27.07.2009 в 04:17)   письмо автору
 
   для: Trianon   (17.04.2009 в 08:56)
 

Привет всем, кто ни буть может ответит на мой пост?

  Ответить  
 
 автор: Рома   (27.07.2009 в 08:01)   письмо автору
 
   для: JESS   (27.07.2009 в 04:17)
 

это ошибка. нужно проверять включен режим магических кавычек или нет.

$login = (isset($_POST['login'])) ? mysql_real_escape_string($_POST['login']) : '';


это тоже. достаточно в любое поле пробел сунуть, чтобы это условие выполнилось

if (!empty($_POST))
{


Вам нужно уделять особое внимание проверкам.
Пользователь может представиться пробелом, каким нибудь кодом, или несколькотысячным текстом например.

http://www.softtime.ru/info/articlephp.php?id_article=35
http://softtime.ru/forum/read.php?id_forum=1&id_theme=27389

  Ответить  
 
 автор: Рома   (27.07.2009 в 08:09)   письмо автору
 
   для: Рома   (27.07.2009 в 08:01)
 

http://php.su/articles/?cat=security

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования