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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: не работает авторизация, ХЭЛП!

Сообщения:  [1-7] 

 
 автор: cheops   (03.05.2005 в 19:06)   письмо автору
 
   для: shimi   (03.05.2005 в 04:01)
 

>Но меня насторожил комментарий в php.ini о том, что включение этой опции ведет
> к проблемам безопасности. Не могли бы вы рязъяснить?
Да, такая проблема существует. Обычно приводят следующий классический пример. Из HTML-формы index.php в обработчик handler.php передаётся два параметра user и password, для имени и пароля, по которым посетителю предоставляется доступ к какой-либо странице, на-пример, управлению его виртуальным счётом.
<?php 
// Файл handler.php, принимающий от формы index.php два параметра 
// $user и $password для имени пользователя и пароля, соответственно 
if($user == "user1" && $password == "password1"

  
$access 1

if(
$access

  
// Доступ к виртуальному счёту 

?>

В случае установки директивы register_globals в файле php.ini в значение "On", логика работы скрипта может быть нарушена. Так если в строке запроса обратится по адресу handler.php?access=1 авторизация произойдет, минуя HTML-форму и части кода, ответственного за авторизацию. Разумеется, в данном случае защитить Web-приложени очень просто, но в больших Web-приложениях могут быть неочевидные ситуации. На фоне того, что злоумышленник может автоматически обращаться и ана-лизировать ответы, или коды выложены для всеобщего доступа, вероятность взлома возрастает значительно, так как отследить все такие ситуации сложно.

   
 
 автор: Flash5   (03.05.2005 в 14:15)   письмо автору
 
   для: glsv (Дизайнер)   (03.05.2005 в 11:06)
 

Скажу однозначно забудьте о REGISTER_GLOBAL, и используйте только $_POST $_GET кстати вы можете в ручную редактировать эти массивы
$_POST['password'] = 'New value';

   
 
 автор: glsv (Дизайнер)   (03.05.2005 в 11:06)   письмо автору
 
   для: shimi   (03.05.2005 в 04:01)
 

>Но меня насторожил комментарий в php.ini о том, что включение этой опции ведет к проблемам безопасности. Не могли бы вы рязъяснить?

Небольшой комментарий по этому вопросу приводится в статье по ссылке.

http://www.softtime.ru/info/articlephp.php?id_article=13

   
 
 автор: glsv (Дизайнер)   (03.05.2005 в 11:05)   письмо автору
 
   для: shimi   (03.05.2005 в 04:01)
 

Notice: - это рекомендации по кодированию. Их вывод следует отключить в php.ini
Установите следующее значение директивы error_reporting

error_reporting  = E_ALL & ~E_NOTICE.


>Warning: Cannot modify header information
Так как в окно браузера было выдано предупреждение, то не были отправлены заголовки

header("Location: index.php");

Проблема должна исчезнуть после того, как исправите директиву error_reporting

   
 
 автор: shimi   (03.05.2005 в 04:01)   письмо автору
 
   для: cheops   (03.05.2005 в 03:47)
 

Вы меня опять выручаете =). Проблему решил :

вместо $submit, $login, $password выставил $_POST['submit'], $_POST['login'], $_POST['password']

включил register_globals on (стояло off действительно)

Но меня насторожил комментарий в php.ini о том, что включение этой опции ведет к проблемам безопасности. Не могли бы вы рязъяснить?

Вот еще.
Плохо работает система защиты от прямого ввода адреса myplace.php. Код его еще раз:

1   <?php 
2   
unset($logged_user); 
3   session_start(); 
4   session_register($logged_user); 
5   if(!isset($logged_user)) 
6   
7   header("Location: index.php"); 
8   exit; 
9   
10 ?> 
<html> 
<body> 
  Hello, <?php echo $logged_user?> 
</body> 
</html>


закрыл окно, чтобы убить сессию мою, потом попытался зайти напрямую на эту страницу, выдаласб вот такая ошибка :
Notice: Undefined variable: logged_user in c:\Testing\myplace.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at c:\Testing\myplace.php:4) in c:\Testing\myplace.php on line 7

   
 
 автор: cheops   (03.05.2005 в 03:47)   письмо автору
 
   для: shimi   (03.05.2005 в 03:22)
 

Включена ли директива register_globals в конфигурационном файле php.ini? Если нет, то её следует включить или использовать суперглобальные массивы http://www.softtime.ru/info/articlephp.php?id_article=13, т.е. вместо
<?php
if($submit
{
?>

писать
<?php
if($_POST['submit']) 
{
?>

   
 
 автор: shimi   (03.05.2005 в 03:22)   письмо автору
 
 

делаю как показывали:

form.html

<form name="logon" method="post" action="authorize.php">
  <input name="login" type="text" size="15">
  <input name="password" type="password" size="15">
<input class=button type=submit name=submit value="ENTER">
</form>

authorize.php

<?php
session_start
();

if(
$submit)
{
      if((
$login=="mylogin")&&($password=="mypassword"))
      {
        
$logged_user $login;
        
session_register("logged_user");
        
header("Location:  myplace.php");
        exit;
      }
}
?>
<html><body>
  Access denied!
</body></html>


myplace.php

<?php
  
unset($logged_user);
  
session_start();

  
session_register($logged_user);

  if(!isset(
$logged_user))
{
    
header("Location: index.php");
    exit;
}
?>
<html>
 <body>
  Hello, <?php echo $logged_user?>
 </body>
</html>


После выполнения пишет Notice: Undefined variable: submit и мою строчку из authorize.php Access denied!

Подскажите, где что не так, пожалуйста

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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