|
|
|
|
|
для: 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-приложениях могут быть неочевидные ситуации. На фоне того, что злоумышленник может автоматически обращаться и ана-лизировать ответы, или коды выложены для всеобщего доступа, вероятность взлома возрастает значительно, так как отследить все такие ситуации сложно. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(03.05.2005 в 11:06)
| | Скажу однозначно забудьте о REGISTER_GLOBAL, и используйте только $_POST $_GET кстати вы можете в ручную редактировать эти массивы
$_POST['password'] = 'New value'; | |
|
|
|
|
|
|
|
для: shimi
(03.05.2005 в 04:01)
| | >Но меня насторожил комментарий в php.ini о том, что включение этой опции ведет к проблемам безопасности. Не могли бы вы рязъяснить?
Небольшой комментарий по этому вопросу приводится в статье по ссылке.
http://www.softtime.ru/info/articlephp.php?id_article=13 | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: 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
| |
|
|
|
|
|
|
|
для: shimi
(03.05.2005 в 03:22)
| | Включена ли директива register_globals в конфигурационном файле php.ini? Если нет, то её следует включить или использовать суперглобальные массивы http://www.softtime.ru/info/articlephp.php?id_article=13, т.е. вместо
писать
<?php
if($_POST['submit'])
{
?>
|
| |
|
|
|
|
|
|
| делаю как показывали:
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!
Подскажите, где что не так, пожалуйста | |
|
|
|
|