Считывание исходного кода

Aidan Pride

Новичок
Считывание исходного кода

У меня есть 2 страницы:
cfg.php
PHP:
<?
$name[0]='eiden';
$password[0]='praid';
?>
index.php
PHP:
<?
include "cfg.php";
if(isset($id) && $id!="1"){
   for($i=0;$i<=count($hash)-1;$i++){
      if($_COOKIE['id']==$hash[$i]){
         echo "<a href='$url/admind.php'> Добро пожаловать, $name[$i]. Для продолжения работы нажмите на любой участок текста</a>";
         $i=60000;
      }   
   }
}else{
   $i=1;
}
$i=60000;
if($i<60000){
   if(!isset($login)){
      echo "<FORM name=login method=post encType=multipart/form-data action='admin.php'>
      <TABLE align=center cellSpacing=2 cellPadding=2 border=0>
      <tr>
      <td weight=50>Login</td>
      <td weight=50><INPUT class=textline name=login></td>
      </tr>
      <tr>
      <td weight=50>Password</td>
      <td weight=50><INPUT class=textline name=pass type='password'></td>
      </tr>
      <tr>
      <td colspan=2>
      <center><INPUT class=subm type=submit value=Login name=subm></center>
      </td>
      </tr>
      </table>";
   }else{
      if(!isset($pass)){
         echo "Вы ввели неверный пароль для этого аккаунта, либо данный аккаунт не существует. Вернитесь назад и попробуйте еще раз<br><A href='javascript:history.go(-1)'>Назад</A>";
      }else{
         for($i=0;$i<=count($name)-1;$i++){
            if($login==$name[$i]){
               if($pass==$password[$i]){
                  setcookie("id",$hash[$i]);
                  echo "<a href='$url/admind.php'> Добро пожаловать, $name[$i]. Для продолжения работы нажмите на любой участок текста</a>";
                  $i=60000;
               }else{
                  echo "Вы ввели неверный пароль для этого аккаунта, либо данный аккаунт не существует. Вернитесь назад и попробуйте еще раз<br><A href='javascript:history.go(-1)'>Назад</A>";
                  $i=60000;
               }
            }   
         }
         if($i<60000){
            echo "Вы ввели неверный пароль для этого аккаунта, либо данный аккаунт не существует. Вернитесь назад и попробуйте еще раз<br><A href='javascript:history.go(-1)'>Назад</A>";
         }
      }
   }
}
?>
Возможно ли вытащить $password из cfg.php человеку который не имеет доступа к самим скриптам?
 

Фанат

oncle terrible
Команда форума
нет

-~{}~ 20.11.05 02:01:

вместо $i=60000 следует использовать Break
впрочем, и цикл здесь не нужен - достаточно array_search

if ($password[array_search($_POST['login'],$name)])===$_POST['pass'])

-~{}~ 20.11.05 02:03:

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

white phoenix

Новичок
алгоритм сделан коряво, но это я надеюсь ты исправишь, а также видна уязвимость, при register_globals = on, делаешь script.php?name[1]=white_phoenix&password[1]=kill_your_self_save_the_planet, вводишь эти данные и вперед. Чтобы этого избежать напиши в начале cfg.php:
PHP:
$name = array();
$password = array();
 

Aidan Pride

Новичок
PHP:
<?
include "cfg.php";
if(isset($_POST['login']) && isset($_POST['pass'])){
	if($password[array_search($_POST['login'],$name)]==$_POST['pass']){
		setcookie("id",$hash[array_search($_POST['login'],$name)]);
	}else{
		setcookie("id","2");
	}
	header("Location: $url/admin.php"); 
	exit();
}else{
	if(isset($_COOKIE['id']) && $_COOKIE['id']!="1"){
		if(array_search($_COOKIE['id'],$hash)!=null){
			echo "<a href='$url/admind.php'> Добро пожаловать, {$name[array_search($_COOKIE['id'],$hash)]}. Для продолжения работы нажмите на любой участок текста</a>";
			exit();
		}else{
			setcookie("id","1");
			echo "Вы не прошли процедуры входа. Пожалуйста кликните <A href='$url/admin.php'>сюда</A>";
			exit();
		}			
	}else{
		echo "<FORM name=login method=post encType=multipart/form-data action='admin.php'><TABLE align=center cellSpacing=2 cellPadding=2 border=0><tr><td weight=50>Login</td><td weight=50><INPUT class=textline name=login></td></tr><tr><td weight=50>Password</td><td weight=50><INPUT class=textline name=pass type='password'></td></tr><tr><td colspan=2><center><INPUT class=subm type=submit value=Login name=subm></center></td></tr></table>";
	}
}
?>
В таком варианте получилось. На сколько я понимаю-так оно правильней.
П.С. white phoenix-спасибо за метод защиты. Не знаешь еще каких-либо методов защиты от несанкционированого доступа в инклуды?
 
Сверху