Перейти к содержимому


Партнерская программа Kredov

Как заставить работать сайт с отключенной директивой "register_globals"

#11 1putnik

1putnik
    Topic Starter
  • Пользователь
  • 96 сообщений
  • Репутация: 8
0

Отправлено 30 Октябрь 2013 - 13:55

Вот полная форма авторизации, но навряд-ли здесь ошибки потому, что авторизация происходит.

<FORM name=gm action=lobby/log_proces.php method=post>
<TR>
<TD width="11">
						    <p align="center">&nbsp;</TD><TD width="177" background="/images/fon3-2.gif">
						    <p align="center"><INPUT maxLength=16 size=10 name=login style="background-image:url('/imagesvxod.gif'); border-width:1px; border-color:black; border-style:solid;"></TD><TD width="10">
						    <p>&nbsp;</p>
</TD></TR>
<TR>
<TD width="11" height="15">
						    <p align="center">&nbsp;</TD><TD width="177" height="15" background="/images/fon3-2.gif">
						    <p align="center"><INPUT type=paspor maxLength=16 size=10 name=paspor style="background-image:url('/imagesvxod.gif'); border-width:1px; border-color:black; border-style:solid;"></TD><TD width="10" height="15">
						    <p>&nbsp;</p>
</TD></TR>
<TR>
<TD width="11" height="45">
						    <p align="center">&nbsp;</TD><TD width="177" height="45" background="/images/fon3-3.gif">
						    <p align="center"><INPUT type="submit" value="Войти" name=submit style="background-color:rgb(220,151,40);">
<INPUT type=hidden value=1 name=send><A href="../lostpass.php">Напомнить</A></TD><TD width="10" height="45">
						    <p>&nbsp;</p>
</TD></TR></FORM>

Меняю $_GET на $_POST в log_proces.php - авторизация не происходит, возвращается форма.
Нашел другие переменные и вот так изменил log_proces.php - эффекта ноль.

<?
session_start();
$login = "";
$pasport = "";
foreach ($_GET as $var => $value)
{
if (preg_match("/^[A-Za-z0-9]{4,15}$/", $value)) {
if ($var=="login"){ $login=$value;}
if ($var=="pasport"){ $pasport=$value;}
}
}
$login = htmlentities($login);
$pasport = htmlentities($pasport);
if ( isset($_GET['login']) ) $login = $_GET['login'];
if ( isset($_GET['pasport']) ) $pasport = $_GET['pasport'];
if ( isset($_GET['submit']) ) $submit = $_GET['submit'];
if ( isset($_GET['lfrom']) ) $lfrom = $_GET['lfrom'];
if ( isset($_GET['lto']) ) $lto = $_GET['lto'];
if ( isset($_GET['i']) ) $i = $_GET['i'];
if ( isset($_GET['nomer']) ) $nomer = $_GET['nomer'];
if ( isset($_GET['var']) ) $var = $_GET['var'];
if ( isset($_GET['log2']) ) $log2 = $_GET['log2'];
if ( isset($_GET['base_login']) ) $base_login = $_GET['base_login'];
if ( isset($_GET['base_psw']) ) $base_psw = $_GET['base_psw'];
{
include ("../setup.php");
$log2=$login;
$result=mysql_query("select * from `users` where login='$log2' and check_mail ='1' ") or die("Error: ".mysql_error());
$row=mysql_fetch_array($result);
$base_login=$row[1];
$base_pasport=$row[2];
if($login==$base_login && $pasport==$base_pasport && $login<>"")
{
$_SESSION['l']=$base_login;
Header("Location: index.php");
exit;
}
else
{
Header("Location: ../index.php");
exit;
}
}
?>

  • 0

#12 alex159

alex159
  • Пользователь
  • 492 сообщений
  • Репутация: 32

Отправлено 30 Октябрь 2013 - 14:12

Вот полная форма авторизации, но навряд-ли здесь ошибки потому, что авторизация происходит.


1. Во всех полях значения тега name заключить в кавычки. К примеру у вас name=login надо name="login". Вообще в форме у вас почти нету кавычек к тегам

2. В foreach ($_GET as $var => $value) идет поиск по GET. А в форме у вас POST. Что то из этого изменить

3.Это срока вообще не правильная

if ( isset($_GET['login']) ) $login = $_GET['login'];
if ( isset($_GET['pasport']) ) $pasport = $_GET['pasport'];
if ( isset($_GET['submit']) ) $submit = $_GET['submit'];
if ( isset($_GET['lfrom']) ) $lfrom = $_GET['lfrom'];
if ( isset($_GET['lto']) ) $lto = $_GET['lto'];
if ( isset($_GET['i']) ) $i = $_GET['i'];
if ( isset($_GET['nomer']) ) $nomer = $_GET['nomer'];
if ( isset($_GET['var']) ) $var = $_GET['var'];
if ( isset($_GET['log2']) ) $log2 = $_GET['log2'];
if ( isset($_GET['base_login']) ) $base_login = $_GET['base_login'];
if ( isset($_GET['base_psw']) ) $base_psw = $_GET['base_psw'];
{

Заменить на
if ( isset($_GET['login']) ) {$login = $_GET['login'];}
if ( isset($_GET['pasport']) ) {$pasport = $_GET['pasport'];}
if ( isset($_GET['submit']) ) {$submit = $_GET['submit'];}
if ( isset($_GET['lfrom']) ) {$lfrom = $_GET['lfrom'];}
if ( isset($_GET['lto']) ) {$lto = $_GET['lto'];}
if ( isset($_GET['i']) ) {$i = $_GET['i'];}
if ( isset($_GET['nomer']) ) {$nomer = $_GET['nomer'];}
if ( isset($_GET['var']) ) {$var = $_GET['var'];}
if ( isset($_GET['log2']) ) {$log2 = $_GET['log2'];}
if ( isset($_GET['base_login']) ) {$base_login = $_GET['base_login'];}
if ( isset($_GET['base_psw']) ) {$base_psw = $_GET['base_psw'];

4. В форме нету переменной base_psw и много других от куда она передается?
Если не будет этой переменной то процесс не пойдет дальше.

P.S старые скрипты дорабатывать нету смысла. Они делались начинающими с кучай ошибок и костылей.
Легче сделать новый или найти другой
  • 0

#13 1putnik

1putnik
    Topic Starter
  • Пользователь
  • 96 сообщений
  • Репутация: 8

Отправлено 30 Октябрь 2013 - 15:06

Оставил это:

if ( isset($_GET['login']) ) {$login = $_GET['login'];}
if ( isset($_GET['pasport']) ) {$pasport = $_GET['pasport'];}
if ( isset($_GET['submit']) ) {$submit = $_GET['submit'];}
В браузере : Удаленный сервер или файл не найден ...
Даже пробывал в конце каждой строчки поменять местами фигурную скобку и точку с запитой
Удаляю фигурные скобки - так же белый экран

Сообщение отредактировал 1putnik: 30 Октябрь 2013 - 15:15

  • 0

#14 1putnik

1putnik
    Topic Starter
  • Пользователь
  • 96 сообщений
  • Репутация: 8

Отправлено 30 Октябрь 2013 - 15:33

Я тут подумал: может ну его на хрен, пускай будет включен этот "register_globals" .
Может просто запретить в htaccess ввод некоторых символов и команд в адресной строке?
Как думаете это обезопасит сайт от взлома?
  • 0

#15 alex159

alex159
  • Пользователь
  • 492 сообщений
  • Репутация: 32

Отправлено 30 Октябрь 2013 - 15:35

Можно немного подробней. Что именно вы хотите обезопасить? И где?


  • 0

#16 Slava1988

Slava1988
  • Пользователь
  • 162 сообщений
  • Репутация: 13

Отправлено 30 Октябрь 2013 - 15:45

а пару строчек в начало кода добавить и посмотреть что выведет?

ini_set('display_errors',1);

error_reporting(E_ALL);


  • 0

#17 1putnik

1putnik
    Topic Starter
  • Пользователь
  • 96 сообщений
  • Репутация: 8

Отправлено 30 Октябрь 2013 - 15:47

Можно немного подробней. Что именно вы хотите обезопасить? И где?

Сайт казино, я его не публикую, пока не буду уверен в безопасности
  • 0

#18 alex159

alex159
  • Пользователь
  • 492 сообщений
  • Репутация: 32

Отправлено 30 Октябрь 2013 - 17:12

Просто все входящие данные обрабатывайте.
  • 0

#19 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 30 Октябрь 2013 - 17:55

Я тут подумал: может ну его на хрен, пускай будет включен этот "register_globals" .

Включенная директива register_globals отнюдь не означает априори уязвимость сайта. Не поверите, но и сейчас встречал не один хостинг, на котором эта директива включена.

Может просто запретить в htaccess ввод некоторых символов и команд в адресной строке?
Как думаете это обезопасит сайт от взлома?

Не совсем понятно каким боком относятся некоторые символы к директиве register_globals и как можно запретить их ввод через htaccess? А если и можно, то что делать, если администратору понадобятся эти самые символы? :D
Возможно этот урок будет полезен для понимания работы директивы register_globals.
  • 0


#20 1putnik

1putnik
    Topic Starter
  • Пользователь
  • 96 сообщений
  • Репутация: 8

Отправлено 30 Октябрь 2013 - 22:02

а пару строчек в начало кода добавить и посмотреть что выведет?

ini_set('display_errors',1);
error_reporting(E_ALL);

Ни чего не выводится

... как можно запретить их ввод через htaccess? А если и можно, то что делать, если администратору понадобятся эти самые символы?

Ну вот например способ

RewriteEngine On
RewriteCond %{THE_REQUEST} ?
RewriteCond %{REQUEST_URI} !/admin/
RewriteCond %{REQUEST_URI} !/admin.php
RewriteRule .* - [G]
Если я не ошибаюсь, но это я проверил, во 2-й строчке запрет символа "?", в 3-й - разрешение из дериктории "admin", в 4-й - разрешение файлов с расширением php в дериктории "admin"
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru