[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Безопасность кодов
Stun
<?php
session_start();
if(isset($_SESSION['login']))
{
if(isset($_SESSION['gid']))
{
header("Location: application.php?id=$_SESSION[gid]");
exit;
}
else header("Location: index.php");
}
include("hashpvpgn.php");
if(isset($_POST['auth']))
{
$db=mysql_connect('xxx','xxx','xxx');
mysql_select_db('xxx');
mysql_query("SET NAMES 'cp1251'");
$check=mysql_fetch_array(mysql_query("SELECT * FROM BNET WHERE username='".mysql_real_escape_string($_POST['login'])."'"));
mysql_select_db('sait');
$ban=mysql_fetch_array(mysql_query("SELECT * FROM bans WHERE who='".mysql_real_escape_string($_POST['login'])."'"));
switch($_POST)
{
case(mktime(substr($check['bti'],11,2),substr($check['bti'],14,2),substr($check['bti'],17,2),substr($check['bti'],5,2),substr($check['bti'],8,2),substr($check['bti'],0,4))>mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"))):
$error="<ul><li>Аккаунт заблокирован на 5 минут</li></ul>";
break;
case($check['username']!=strtolower($_POST['login']) or $check['acct_passhash1']!=pvpgn_hash($_POST['password'])):
if($check['username']==strtolower($_POST['login']))
{
mysql_select_db('xxx');
if($check['na']=='5') mysql_query("UPDATE BNET SET bti='".date("Y-m-d H:i:s",mktime(date("H"),date("i")+5,date("s"),date("m"),date("d"),date("Y")))."',na=0 WHERE username='".mysql_real_escape_string($_POST['login'])."'");
else mysql_query("UPDATE BNET SET na=(na+1) WHERE username='".mysql_real_escape_string($_POST['login'])."'");
}
$error="<ul><li>Логин или пароль введён не правильно</li></ul>";
break;
case(!empty($check['code'])):
$error="<ul><li>Вы не активировали аккаунт. Для активации проверьте свою эл.почту, которую указывали при регистрации!</li></ul>";
break;
case(mktime(substr($ban['dt'],11,2),substr($ban['dt'],14,2),substr($ban['dt'],17,2),substr($ban['dt'],5,2),substr($ban['dt'],8,2),substr($ban['dt'],0,4))>mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"))):
$error="<ul><li>Вы были забанены по причине - $ban[reason] до $ban[dt]. Произошло в игре #$ban[aid]</li></ul>";
break;
default:
$login_to_security=mysql_real_escape_string($_POST['login']);
mysql_select_db('xxx');
mysql_query("UPDATE xxx SET na=0,bti=NULL WHERE username='".mysql_real_escape_string($_POST['login'])."'");
mysql_select_db('sait');
$check_reg_app=mysql_fetch_array(mysql_query("SELECT * FROM application WHERE (one='$login_to_security' OR two='$login_to_security' OR three='$login_to_security' OR four='$login_to_security' OR five='$login_to_security' OR six='$login_to_security' OR seven='$login_to_security' OR eight='$login_to_security' OR nine='$login_to_security' OR ten='$login_to_security') AND (status='Активна' OR status='Ожидают бота' OR status='Ожидают игроков' OR status='Играют' OR status='Отменена')"));
$_SESSION['login']=$_POST['login'];
$_SESSION['sid']=md5(session_id());
$_SESSION['privilege']=$check['auth_admin'];
$ip=mysql_escape_string($_SERVER['REMOTE_ADDR']);
$login=mysql_escape_string(strtolower($_SESSION['login']));
$dt=mysql_escape_string(date('Y-m-d H:i:s'));
mysql_query("INSERT INTO `history_visits`(ip,login,dt) VALUES('$ip','$login','$dt');");
if((($check_reg_app['status']=='Активна')or($check_reg_app['status']=='Ожидают бота')or($check_reg_app['status']=='Играют')or($check_reg_app['status']=='Отменена')or($check_reg_app['status']=='Ожидают игроков'))and(!empty($check_reg_app['id'])))
{
$numbers_is_eng=array("1"=>"one","2"=>"two","3"=>"three","4"=>"four","5"=>"five","6"=>"six","7"=>"seven","8"=>"eight","9"=>"nine","10"=>"ten");
for($ten=0;$ten++<10;)
{
if(empty($check_reg_app["$numbers_is_eng[$ten]"])) unset($check_reg_app["$numbers_is_eng[$ten]"]);
if(strtolower($check_reg_app["$numbers_is_eng[$ten]"])==strtolower($_SESSION['login'])) $_SESSION['slot']=$numbers_is_eng["$ten"];
}
$_SESSION['gid']=$check_reg_app['id'];
mysql_close($db);
header("Location: application.php?id=$_SESSION[gid]");
exit;
}
header("Location:index.php");
}
mysql_close($db);
}
?>
Проверьте на безопасность код пжл ! :rolleyes:



Спустя 1 час, 42 минуты, 5 секунд (9.04.2011 - 19:53) ИНСИ написал(а):
Много не стал смотреть, потому что код написан ужасно, в плане читабельности, но:

1. Проверяй на "волшебные ковычки"
2. В запросах использую названия таблиц и полей в апострофах, а значения в одинарных ковычках.

Спустя 11 часов, 10 минут, 34 секунды (10.04.2011 - 07:04) Stun написал(а):
Цитата (velbox @ 9.04.2011 - 16:53)
Много не стал смотреть, потому что код написан ужасно, в плане читабельности, но:

1. Проверяй на "волшебные ковычки"
2. В запросах использую названия таблиц и полей в апострофах, а значения в одинарных ковычках.

А где именно ?

Спустя 11 минут, 11 секунд (10.04.2011 - 07:15) ИНСИ написал(а):
К примеру вот так:
function safesql($source) {
$source = trim($source);
if(get_magic_quotes_gpc()) $source = stripslashes($source);
return mysql_real_escape_string($source);
}

mysql_query("
UPDATE `users`
SET `name` = '"
.safesql($_POST['name'])."'
WHERE `username` = '"
.safesql($_POST['login'])."'
"
);


Спустя 3 часа, 23 минуты, 8 секунд (10.04.2011 - 10:38) Stun написал(а):
Цитата (velbox @ 10.04.2011 - 04:15)
К примеру вот так:
function safesql($source) {
$source = trim($source);
if(get_magic_quotes_gpc()) $source = stripslashes($source);
return mysql_real_escape_string($source);
}

mysql_query("
UPDATE `users`
SET `name` = '"
.safesql($_POST['name'])."'
WHERE `username` = '"
.safesql($_POST['login'])."'
"
);


А если у меня в php.ini вот так: magic_quotes_gpc = Off , а значит мне не надо эти танцы с бубном

Спустя 14 минут, 46 секунд (10.04.2011 - 10:53) Trianon написал(а):
Stun
а танцы в любом случае не нужны.
Поскольку никто не сказал, что параметр $source взялся из суперглобальных массивов G/P/C

Спустя 1 час, 32 минуты, 1 секунда (10.04.2011 - 12:25) Stun написал(а):
Значит здесь с точки зрения безопасности всё безопасно biggrin.gif
Быстрый ответ:

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