[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Коды на безопасность
Stun
Здраствуйте, я буду здесь выкладывать код для проверки на безопасность :P
authorization.php

<?php
if(!empty($_POST['auth'])) //Проверка, нажат ли submit
{
$db=mysql_connect('localhost','nick','pass')
mysql_select_db('nikita');
mysql_query("SET NAMES 'cp1251'");
$login=strtolower($_POST['login']);
$password=function($_POST['password']); //Хэшированье
@$check=mysql_fetch_array(mysql_query("SELECT * FROM users WHERE login='$login'"));
if(($check['login']==$login)and($check['password']==$password))
{
session_save_path('/var/www');//не полный путь !!!
session_start();
$_SESSION['login']=$_POST['login'];
$_SESSION['money']='0.00';
$_SESSION['sid']=md5(session_id()); //Вот здесь у меня сомнения
header("Location:index.php");
}
else echo "<ul><li>Логин или пароль введён не правильно</li></ul>";
mysql_close($db);
}
?>




Спустя 2 часа, 8 минут, 30 секунд (18.12.2010 - 11:48) Fredrich написал(а):
Это реально танцы с бубном, улучшения качества безопасности нет, а вот ошибок при работе скрипта будет масса.

Спустя 15 минут, 5 секунд (18.12.2010 - 12:03) twin написал(а):
Цитата
  $password=function($_POST['password']); //Хэшированье

что это?
   @$check=mysql_fetch_array(mysql_query("SELECT * FROM users WHERE login='$login'"));

Спустя 29 минут, 23 секунды (18.12.2010 - 12:33) Fredrich написал(а):
twin, наверное какая то функция придуманная самим автором

Спустя 32 минуты, 58 секунд (18.12.2010 - 13:06) twin написал(а):
Автору сюда.

Спустя 9 часов, 11 минут, 53 секунды (18.12.2010 - 22:18) Stun написал(а):
Цитата (Fredrich @ 18.12.2010 - 09:33)
twin, наверное какая то функция придуманная самим автором

Абсолютно верно. Просто я её переписал в целях конспирации ph34r.gif

Спустя 8 минут, 32 секунды (18.12.2010 - 22:26) koala написал(а):
Stun, прочитай статью twin'a об безопасности тут.

Вот например:


@$check=mysql_fetch_array(mysql_query("SELECT * FROM users WHERE login='$login'"));


А надо так:

$check = mysql_query("SELECT * FROM `users` WHERE login='". mysql_real_escape_string($login) ."'");

Спустя 6 минут, 40 секунд (18.12.2010 - 22:33) Stun написал(а):
Цитата (koala @ 18.12.2010 - 19:26)
Stun, прочитай статью twin'a об безопасности тут.

Вот например:


@$check=mysql_fetch_array(mysql_query("SELECT * FROM users WHERE login='$login'"));


А надо так:

$check = mysql_query("SELECT * FROM `users` WHERE login='". mysql_real_escape_string($login) ."'");

Вы не ошиблись? Мне ведь массив нужен, а у вас обычный запрос!

Спустя 5 минут, 44 секунды (18.12.2010 - 22:39) koala написал(а):

mysql_fetch_array ($check);


Пожалуйста =)

Спустя 11 минут, 50 секунд (18.12.2010 - 22:50) Stun написал(а):
Цитата (koala @ 18.12.2010 - 19:39)

mysql_fetch_array ($check);


Пожалуйста =)

Огромное спасиба за ссылку и за эту информацию! А с большего, больше ничего опасного не было замечано ? huh.gif

Спустя 20 минут, 10 секунд (18.12.2010 - 23:11) ИНСИ написал(а):
Stun попробуй вот так:

session_start();

if($_POST['auth'] and $_POST['auth'] != '') {

// подключение к БД

function var_filter($value) {
if(is_array($value)) { $value = array_map('var_filter', $value); }
else { $value = trim($value); if(get_magic_quotes_gpc()) $value = stripslashes($value); }
return $value;
}

$row = mysql_query("
SELECT *
FROM `users`
WHERE `login` = "
.mysql_real_escape_string(var_filter(strtolower($_POST['login'])))."
AND `password` = "
.mysql_real_escape_string(var_filter($_POST['password']))
);


if($data = mysql_fetch_assoc($row)) {
// тут что надо далее сделать
} else {
echo "<ul><li>Логин или пароль введён не правильно</li></ul>";
}
}
Быстрый ответ:

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