[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: хранение пароля от админ-страницы
timm
у меня небольшой сайт. сделал для него админ-страницу для добавления новостей. теперь решаю задачу по защите этой страницы паролем.

необходимо простое но в то же время безопасное решение. mysql не знаю, поэтому желательно без этого. сессии также нежелательны.

пока думаю над таким элементарным вариантом: хранить пароль в файле inc.php... в переменной $password. и из скрипта авторизации выполнить проверку вводимого пользователем значения с этой переменной.
насколько это безопасно?



Спустя 15 минут, 3 секунды (28.10.2008 - 12:10) Krist_ALL написал(а):
Код
if($_POST['LOGIN'] == 'timm' && $_POST['PASSWORD'] == '123456789') {

.............
}
else
{
echo 'FATAL ERROR';
}

только фильтруй переменную $_POST[''] а то хакнут админку твою)

Спустя 24 минуты, 52 секунды (28.10.2008 - 12:35) md5 написал(а):
это безопасно

а сессии надо использовать все равно
иначе как определить, авторизован юзер или нет?

вобщем схема такая

Код
session_start();

$pass = '12345';

if (!isset($_SESSION['admin'])) {
    if (isset($_POST['password']) && $_POST['password']==$pass) {
        $_SESSION['admin'] = true;
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
    }
    print '<form > ... ';
    // тут выводим форму для авторизации
    exit;
}

// ну а тут уже выводим для админов...

Спустя 51 минута, 47 секунд (28.10.2008 - 13:27) Sylex написал(а):
а это зачем так длинно?
Код
if (isset($_POST['password']) && $_POST['password']==$pass)


типа так:
Код
if ($_POST['password']==$pass)


Спустя 23 минуты, 23 секунды (28.10.2008 - 13:50) bearman написал(а):
используй "http авторизацию" погугли, это проще всего описанного и безопаснее wink.gif

если уж столько нужных вещей не знаешь

Спустя 2 часа, 41 минута, 52 секунды (28.10.2008 - 16:32) md5 написал(а):
Цитата(Sylex @ 28.10.2008, 13:27) [snapback]53013[/snapback]
а это зачем так длинно?
Код
if (isset($_POST['password']) && $_POST['password']==$pass)


типа так:
Код
if ($_POST['password']==$pass)

я даже не хочу комментировать твой пост
иди учись

Спустя 1 час, 31 минута, 27 секунд (28.10.2008 - 18:03) Sylex написал(а):
Цитата(md5 @ 28.10.2008, 19:32) [snapback]53042[/snapback]
Цитата(Sylex @ 28.10.2008, 13:27) [snapback]53013[/snapback]
а это зачем так длинно?
Код
if (isset($_POST['password']) && $_POST['password']==$pass)


типа так:
Код
if ($_POST['password']==$pass)

я даже не хочу комментировать твой пост
иди учись


Notice: Undefined index: ...

это чтоль имеешь ввиду? smile.gif

Спустя 1 час, 31 минута, 43 секунды (28.10.2008 - 19:35) Gradus написал(а):
Код
session_start();

$pass = '12345';

if (!isset($_SESSION['admin'])) {
    if (isset($_POST['password']) && $_POST['password']==$pass) {
        $_SESSION['admin'] = true;
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
    }
    print '<form > ... ';
    // тут выводим форму для авторизации
    exit;
}

// ну а тут уже выводим для админов...

Я вот если чесно не очень понимаю,но работает.

Получаеться такой смысл что проверям сесию у пользователя если её нету то выдаём форму post когда он её проходит проверяем пароль далее присваем ему эту сессию и обновляем страницу,но вот как работает всё остальное для админов если нету else,да и до сех пор не пойму зачем проверять если ли $_POST['password'] какая разница если мы не проверим?если бы была защита от хостов тогда выглядело так и было бы понятно
Код
isset($_POST['password']) { $passwod = $_POST['password']};
Извеняюсь что туплю smile.gif интересно просто

Спустя 38 минут, 32 секунды (28.10.2008 - 20:14) timm написал(а):
в общем, я решил всё же попытаться осилить сессии, сделать как советует md5

но сессии почему-то не работают - я проверяю их на простых примерах из инета.
в частности, не работает следующий пример, из двух файлов
Файл default.php:
Код
<?
unset($s);
session_start();
session_register("s");
?>

Файл index.php
Код
<?
include("default.php");
if (!isset($s['start'])) {
$s['start']=time();
echo "Добро пожаловать на наш сайт!";
}
else {
echo "Вы впервые пришли на наш сайт ".(time()-$s['start'])." секунд назад";
}
?>

при повторном посещении типа как должно выдаваться, сколько секунд назад я зашел впервые. не работает.

возможно, проблема в настройках php.ini. Кстати, у меня там два файла - php.ini-dist и php.ini-recommended - какой из них нужно править? Я пока правил оба одинаково, пытаясь задать путь для хранения сессий.
session.save_handler = files
session.save_path = "f:/Server/new/session"
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 1440
session.use_trans_sid = 0
(это не все) директорию "f:/Server/new/session" создал.

зато вот такой пример работает!
Код
<?
session_start();
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
echo "Вы обновили эту страницу ".$_SESSION['counter']++." раз.<br>
<a href=".$_SERVER['PHP_SELF'].'?'.session_name().'='.session_id().">обновить";
?>


поиском на компе нашел, где сохраняется сессия - в папке "C:\WINDOWS", под именем "sess_22o1rle0ha5fvh7n5t0v482dl0".

итак, вопросы:
1) почему не работает первый пример?
2) какой из двух файлов ini нужно править?
3) как сделать, чтобы сессии сохранялись в нужном каталоге?

Спустя 23 минуты, 12 секунд (28.10.2008 - 20:37) Sephiroth_Lukaw написал(а):
Цитата(timm @ 28.10.2008, 17:14) [snapback]53063[/snapback]
unset($s); //.
session_start();
session_register("s");

http://php.ru/manual/function.session-register.html
http://php.ru/manual/reserved.variables.ht...riables.session
)
Цитата("http://php.ru/manual/function.session-register.html")
If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.

Спустя 1 час, 2 минуты, 7 секунд (28.10.2008 - 21:39) timm написал(а):
дайте кто-нибудь настройки для сессий файла php.ini и простой пример, иллюстрирующий работу этих самых сессий, (для проверки)... плиз

Спустя 12 часов, 6 минут, 27 секунд (29.10.2008 - 09:45) timm написал(а):
так всё, пример уже не надо, всё работает вроде...
md5 - спасибо!

единственное, я не понял, где у меня сохраняется файл сессии и как этот путь прописывать, а также почему в сценариях с сессиями инструкция
echo $PHPSESSID;
не выдаёт мне ничего...

Спустя 3 часа, 31 минута, 27 секунд (29.10.2008 - 13:17) timm написал(а):
в общем, вот такой получился код (ещё раз спасибо md5), файл login_page.php

Код
<? session_start();
$pass = '123';

if (!isset($_SESSION['admin1'])) {
if (isset($_POST['password']) && $_POST['password']==$pass) {
$_SESSION['admin1'] = true;
header('Location: ' . $_SERVER['PHP_SELF']);
exit;
}
print ' <p style="margin-top: 240px" align=center valign=middle>Enter password
<table align=center><form action="" method="POST">
<input type="text" name="password" value="">
<input type="submit" value="OK">
</form>';
exit;
}
?>



он инклудится в собственно файл админ-страницы - admin.php

и всё бы хорошо, но есть одно но.
после введения корректного пароля и нажатия на кнопку OK в IE появляется чистая страница, и лишь после F5 можно попасть в админку. Firefox и вовсе ругается:
Страница, которую вы пытаетесь загрузить, содержит данные формы. Если вы перешлете их снова, любое действие формы (например, запрос на поиск или онлайн-покупка) будет повторено. Для повторной отправки данных формы нажмите "ОК". В противном случае нажмите "Отмена".
После нажатия на "ОК" (равно как и на "Отмена") выползает опять же чистая страница - в Firefox т.е. в админку вообще не попасть.

При этом на локалхосте админка и в IE и в Firefox загружается сразу же после нажатия на OK в окне авторизации (при введение верного пароля)

Что с этим можно сделать?

И всё ещё в силе вопрос - где мне искать файлы сессий?

upd: на хостинге и в Internet Explorer'e после нажатия на OK при авторизации загружается чистая страница (адрес тот же), и даже после F5

Спустя 1 день, 4 часа, 10 минут, 21 секунда (30.10.2008 - 17:27) Krist_ALL написал(а):
Код
<?php
session_start();
$_SESSION['test'] = 'testing';
echo $_SESSION['test'];
?>

проверь работоспособность этого кода на твоем хостинге/сервере
и огда поймешь работают у тя сессии или нет

Спустя 1 день, 4 часа, 14 минут, 16 секунд (31.10.2008 - 21:42) timm написал(а):
Krist_ALL, работает. Но проблема остаётся.

Прошу всех помочь! Проверьте работоспособность следующих скриптов пожалуйста на своих серверах и скажите в чём может быть причина того, что у меня не работает! Очень нужно.

Итак, первый скрипт default.php
Код
<? session_start();
$pass = '123';

if (!isset($_SESSION['admin34'])) {
if (isset($_POST['password']) && $_POST['password']==$pass) {
$_SESSION['admin34'] = true;
header('Location: ' . $_SERVER['PHP_SELF']);
exit;
}
print ' <p style="margin-top: 240px" align=center valign=middle>Enter password
<table align=center><form action="" method="POST">
<input type="text" name="password" value="">
<input type="submit" value="OK">
</form></table>';
exit;
}
?>


второй скрипт index.php

Код
<?php session_start();
include "default.php";
echo "<p class=headline>Вы благополучно авторизовались</p>";
?>


Запускаем второй скрипт.

У меня на локалхосте всё работает отлично - после ввода правильного пароля выдается: "Вы благополучно авторизовались".
А вот на хостинге после ввода правильного пароля загружается чистая страница... По-че-му?

(При этом простенький скрипт, проверяющий, работают ли на хостинге сессии - см. предыдущие сообщение юзера Krist_ALL - выполняется на ура)

Спустя 2 часа, 57 минут, 49 секунд (1.11.2008 - 00:39) Gsmit написал(а):
2-ва раза делаешь session_start(); хотя в include файле тоже session_start(); поэтому у тебя и ничё не пашет похоже rolleyes.gif

Спустя 11 часов, 9 минут, 8 секунд (1.11.2008 - 11:48) timm написал(а):
нет, не помогло

Спустя 36 минут, 3 секунды (1.11.2008 - 12:25) Protva написал(а):
А эта строка правильно набрана?

<?php session_start();

Спустя 2 часа, 25 минут, 2 секунды (1.11.2008 - 14:50) timm написал(а):
Цитата(Protva @ 1.11.2008, 9:25) [snapback]53346[/snapback]
А эта строка правильно набрана?

<?php session_start();


вы о том, что после <?php нужно делать перевод строки что ли? Так это не имеет значения...

Спустя 6 часов, 26 минут, 27 секунд (1.11.2008 - 21:16) CamerRoMan написал(а):
Можно использовать волшебные файлы
.htaccess
Код
AuthUserFile /путь к файлу с паролями/.htpasswd
AuthGroupFile /dev/null
AuthType Basic
AuthName "Authorized User Only"

<Limit GET POST PUT DELETE>
require valid-user
</Limit>

.htpasswd
Код
user:password //только пароль записывает мудрено... погугли

Закинуть их в тот католог где у тебя админ страничка и не нужно мучатся с сессиями

Спустя 17 минут, 40 секунд (1.11.2008 - 21:34) CamerRoMan написал(а):

Спустя 14 часов, 59 минут, 38 секунд (2.11.2008 - 12:33) timm написал(а):
CamerRoMan

прога для шифорвания паролей какая-то мудреная, да ещё и на перле - я его совсем не знаю.

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

ответьте на мой первоначальный вопрос пожалуйста - почему не работают мои скрипты

Спустя 29 минут, 6 секунд (2.11.2008 - 13:02) Xakep написал(а):
index.php
Код
<?php
session_start();
include "default.php";
echo "<p class=headline>Вы благополучно авторизовались</p>";
?>


default.php
Код
<?
session_start();
$pass = '123';

if (!isset($_SESSION['admin34'])) {
     if (isset($_POST['password']) && $_POST['password']==$pass) {
        $_SESSION['admin34'] = true;
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
    }
    print ' <p style="margin-top: 240px" align=center valign=middle>Enter password
    <table align=center><form action="" method="POST">
<input type="text" name="password" value="">
<input type="submit" value="OK">
</form></table>';
    exit;
}
?>

Спустя 1 час, 24 минуты, 3 секунды (2.11.2008 - 14:26) timm написал(а):
Хакер, спасибо.

Работает, но не полностью. Сразу загружает чистую страницу, но после F5 пишет о благополучной авторизации. Хочется чтобы не нужно было на F5 жать

И кстати я не понял, в чём отличие вашего варианта от моего...

Спустя 1 час, 57 минут, 25 секунд (2.11.2008 - 16:24) timm написал(а):
Так... Настроил вывод ошибок. Оказывается, он выдаёт не просто чистую страницу, а следующее сообщение:

Warning: Cannot modify header information - headers already sent by (output started at F:\Server\new\study\default.php:1) in F:\Server\new\study\default.php on line 8

потом после обновления страницы загружает требуемое.
Есть мысли как избежать этой ошибки?

Спустя 16 минут, 3 секунды (2.11.2008 - 16:40) Sylex написал(а):
Цитата(timm @ 2.11.2008, 19:24) [snapback]53433[/snapback]
Так... Настроил вывод ошибок. Оказывается, он выдаёт не просто чистую страницу, а следующее сообщение:

Warning: Cannot modify header information - headers already sent by (output started at F:\Server\new\study\default.php:1) in F:\Server\new\study\default.php on line 8

потом после обновления страницы загружает требуемое.
Есть мысли как избежать этой ошибки?


в default.php убедись, что нет никакого вывода до header()... Т.е. скорее всего в default.php код начинается не с самого начала файла... а есть символ перевода строки, пробел или другое...

Спустя 48 минут, 5 секунд (2.11.2008 - 17:28) timm написал(а):
да нет вроде ничего...

Спустя 1 час, 23 минуты, 35 секунд (2.11.2008 - 18:52) Xakep написал(а):
попробуй в файле default.php убрать session_start(); ведь в index.php он уже есть..

Спустя 7 минут, 13 секунд (2.11.2008 - 18:59) Sylex написал(а):
Цитата(Xakep @ 2.11.2008, 21:52) [snapback]53441[/snapback]
попробуй в файле default.php убрать session_start(); ведь в index.php он уже есть..


кстать, точно! smile.gif

Спустя 8 минут, 26 секунд (2.11.2008 - 19:07) timm написал(а):
нет эффекта. да и не с чего ему быть - этот оператор ведь не задает html-код...

Спустя 17 минут, 19 секунд (2.11.2008 - 19:25) Xakep написал(а):
незнаю, что у тебя, но у меня этот код работает прекрасно.

Спустя 8 минут, 26 секунд (2.11.2008 - 19:33) Sephiroth_Lukaw написал(а):
Вид->Просмотри HTML(при выводе ошибки)
Неужели совсем ничего, даже проблема перед строчкой "<!--error-->" - нету?

Спустя 1 час, 4 минуты, 43 секунды (2.11.2008 - 20:38) timm написал(а):
Цитата(Sephiroth_Lukaw @ 2.11.2008, 16:33) [snapback]53454[/snapback]
Вид->Просмотри HTML(при выводе ошибки)
Неужели совсем ничего, даже проблема перед строчкой "<!--error-->" - нету?



спасибо, благодаря этому совету наконец всё заработало! у меня действительно был лишний пробел перед открытием кода php <?

вот, посмотрите кому интересно:
http://www.boulygina.lvs.ru/admin.php

и скажите - это реально взломать?

Спустя 2 часа, 18 минут, 40 секунд (2.11.2008 - 22:56) Xakep написал(а):
взломают, кому надо....

Спустя 1 час, 19 минут, 11 секунд (3.11.2008 - 00:16) Klemanso написал(а):
Цитата(timm @ 28.10.2008, 11:55) [snapback]53002[/snapback]
у меня небольшой сайт. сделал для него админ-страницу для добавления новостей. теперь решаю задачу по защите этой страницы паролем.

необходимо простое но в то же время безопасное решение. mysql не знаю, поэтому желательно без этого. сессии также нежелательны.

пока думаю над таким элементарным вариантом: хранить пароль в файле inc.php... в переменной $password. и из скрипта авторизации выполнить проверку вводимого пользователем значения с этой переменной.
насколько это безопасно?



а не будет ли проще создать таблицу типа s_users где в переменных указать градации прав для каждой группы посетителей
например что если входит администратор - то видны все сылки и ссылка на админ-центр и туда он уже без дополнительного пароля входит
а для прочих групп - видны только остальные ссылки на прочие страницы

в этом случае можно даже делать градации внутри самой группы администраторов
с индексом 1 - видит все элементы управления
с индексом 2 - видит уже какую то часть
с индексом 3 - еще меньшую часть
с индексом 4 - вообще тоько один конкретный раздел (новости, гостевая или еще чего)

Спустя 8 минут, 41 секунда (3.11.2008 - 00:24) timm написал(а):
Цитата(Klemanso @ 2.11.2008, 21:16) [snapback]53484[/snapback]


неплохо придумано. нужно обмозговать.

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

к тому же то, что ссылка не видна ведь ещё не значит, что по ней нельзя пойти... пароль нужен в любом случае

Спустя 10 часов, 41 минута, 13 секунд (3.11.2008 - 11:05) CamerRoMan написал(а):
_http://www.boulygina.lvs.ru/admin/ папки нужно закрывать


_____________
Быстрый ответ:

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