|
|
|
| есть самописный скрип авторизации. отправляет post'ом логин и пароль. если логин и пароль верный то хешует и добавляет куки в md5. на локалхосте работает норм а на хостинге не хочет и кук не добавляет. пробовал со всех браузеров авторизироваться, не работают все кроме фаерфокса.(куки во всех браузерах включены) | |
|
|
|
|
|
|
|
для: user10
(24.03.2010 в 23:59)
| | Баба Ванга ,может помочь(к сожалению её нет в живых) | |
|
|
|
|
|
|
|
для: user10
(24.03.2010 в 23:59)
| | обычно в таких ситуациях рекомендуют прикрепить скрипт к сообщению...
а то телепатическими способностями не все обладают :) | |
|
|
|
|
|
|
|
для: Slo_Nik
(25.03.2010 в 00:30)
| |
<?php
require "config/config.php";
//////////////////////////////////////////
switch ($logadm)
{
case 1:
$logfile = fopen("config/log/admin/adm.log", "a");
fputs($logfile, getenv("REMOTE_ADDR") . " - - ");
fputs($logfile, "[" . date("d/M/Y:H:i:s", time()) . " +0000] ");
fputs($logfile, "\"" . getenv(REQUEST_METHOD) . " ");
fputs($logfile, getenv("REQUEST_URI") . " ");
fputs($logfile, getenv("SERVER_PROTOCOL") . "\" 200 0 ");
fputs($logfile, "\"" . getenv("HTTP_REFERER") . "\" ");
fputs($logfile, "\"" . getenv("HTTP_USER_AGENT") . "\" ");
fputs($logfile, "\n");
fclose($logfile);
break; }
//////////////////////////////////////////
$login = md5(md5(md5(sha1($login))));
$password = md5(md5(md5(sha1($password))));
$lgn = $_POST['login'];
$pass = $_POST['password'];
$l = md5(md5(md5(sha1($lgn))));
$p = md5(md5(md5(sha1($pass))));
///////////////////////////////////////////
$ac=file_get_contents('config/access');
if($_COOKIE['login'] === $login && $_COOKIE['password'] === $password) header ("Location: adm.php");
if($l===$login && $p===$password && $ac<=5)
{
setcookie ("login","$l",time()+120);
setcookie ("password","$p",time()+120);
$ac="0";
$ac=file_put_contents('config/access',$ac);
header ("Location: adm.php");
}
else {
{
if($ac>=5)
/////////--------CAPTCHA------------------------------------------
{
switch ($logadm)
{
case 1:
$logfile = fopen("config/log/admin/adm.log", "a");
fputs($logfile, "<br>");
fputs($logfile, "LOGIN: $lgn");
fputs($logfile, "\n");
fputs($logfile, "<br>");
fputs($logfile, "PASSWORD: $pass");
fputs($logfile, "\n");
fputs($logfile, "<br>");
fputs($logfile, "--------------------------------------------------------");
fputs($logfile, "<br>");
fputs($logfile, "\n");
fclose($logfile);
break; }
echo "
<form method=post action=\"login2.php\">
Логин: <input type=text name=login size=18><br>
Пароль:<input type=password name=password size=18><br>
<img src=\"authcp.php\"><input type=text name=s size=18><br>
<div id=\"ent\"><input type=submit value=Вход></div>
</form>
";}
else
//////---------------------------------------------------------
{
switch ($logadm)
{
case 1:
$logfile = fopen("config/log/admin/adm.log", "a");
fputs($logfile, "<br>");
fputs($logfile, "LOGIN: $lgn");
fputs($logfile, "\n");
fputs($logfile, "<br>");
fputs($logfile, "PASSWORD: $pass");
fputs($logfile, "\n");
fputs($logfile, "<br>");
fputs($logfile, "--------------------------------------------------------");
fputs($logfile, "<br>");
fputs($logfile, "\n");
fclose($logfile);
break; }
$ac++;
$ac=file_put_contents('config/access',$ac);
echo '
<form method=post action="login.php">
Логин: <input type=text name=login size=18><br>
Пароль:<input type=password name=password size=18><br>
<div id="ent"><input type=submit value=Вход></div>
</form>';}
}
}
?>
|
есле 5 попыток неудачных выводит капчу | |
|
|
|
|
|
|
|
для: user10
(25.03.2010 в 00:36)
| |
md5(md5(md5(sha1($login))));
|
(Отвлеченно ),и вам не жалко насиловать ресурсы.
$_COOKIE['password'] === $password)
|
Может, не стоит хранить пароль в ЯВНОМ виде в куках ? | |
|
|
|
|
|
|
|
для: oliss
(25.03.2010 в 01:03)
| | админка для 1 пользователя | |
|
|
|
|
|
|
|
для: user10
(25.03.2010 в 01:11)
| | а при чём тут один пользователь к хранению пароля в открытом виде в куке? | |
|
|
|
|
|
|
|
для: user10
(25.03.2010 в 00:36)
| | откуда берётся переменная $logadm ?
если берётся из GET , то как она приводится к такому виду?
проверте register_globals на локалхосте и хостинге
p.s. возьмите значение атрибутов формы в кавычки... | |
|
|
|
|
|
|
|
для: Slo_Nik
(25.03.2010 в 01:04)
| | из конфига . если $logadm = 1 будет вести лог | |
|
|
|
|
|
|
|
для: user10
(25.03.2010 в 01:07)
| | а вот эти переменные откуда берутся?
$login
$password | |
|
|
|
|
|
|
|
для: Slo_Nik
(25.03.2010 в 01:23)
| | из конфига | |
|
|
|
|
|
|
|
для: user10
(25.03.2010 в 01:28)
| | щас попробовал на прямую куки установить
<?php
require "config/config.php";
//////////////////////////////////////////
//////////////////////////////////////////
$login = md5(md5(md5(sha1($login))));
$password = md5(md5(md5(sha1($password))));
setcookie ("login","$login",time()+120);
setcookie ("password","$password",time()+120);
?>
|
устанавливает только firefox'y . с оперы, ие и хрома не хочет (куки везде включены в настройках) | |
|
|
|
|
|
|
|
для: user10
(25.03.2010 в 01:30)
| | у вас не хватает одного параметра (если всё остальное верно)
int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
|
| |
|
|
|
|
|
|
|
для: user10
(25.03.2010 в 01:07)
| | Если вы хотите чтобы вам помогли ( КОНКРЕТНО ), то Не напрягайте мозг людей которые НА САМОМ ДЕЛЕ ВАМ ХОТЯТ ПОМОЧЬ.
Показывайте ваш код ПОЛНОСТЬЮ, чтобы другие смогли смоделировать вашу проблему и дать вам конструктивный ответ
[ Простите , наболело.] | |
|
|
|
|
|
|
|
для: oliss
(25.03.2010 в 01:34)
| |
<?php
$login = "1111111111";
$password = "2222222222";
setcookie ("login","$login",time()+120);
setcookie ("password","$password",time()+120);
echo $_COOKIE['login'];
echo "<br>";
echo $_COOKIE['password'];
?>
|
opera. chrome. ie
выводит токо <br>
firefox
1111111111
<br>
2222222222 | |
|
|
|
|
|
|
|
для: user10
(25.03.2010 в 01:55)
| | А ,корневую директорию ( отчего отталкивается парсер браузера) слабо указать (для начала) | |
|
|
|
|
|
|
|
для: user10
(25.03.2010 в 01:55)
| | Лучше делать авторизацию с помощью сессии. Я например сделал так:
<?php
// Если не определена константа _ADMIN – завершаем работу скрипта
if(!defined('_ADMIN')) die;
session_start();
$access = array();
$access = file('access.php');
$true_login_md5 = trim($access[1]);
$true_pass_md5 = trim($access[2]);
// Если пришёл логин из формы
if ( !empty($_POST['login']) )
{
// обрабатываем логин и пароль из формы:
$post_login = substr($_POST['login'], 0, 20);
$post_pass = substr($_POST['pass'], 0, 20);
// Записываем в сессию
$_SESSION['login_md5'] = md5($post_login);
$_SESSION['pass_md5'] = md5($post_pass);
}
// Если логин или MD5 пароля не совпадают
if ($_SESSION['login_md5'] != $true_login_md5 or $_SESSION['pass_md5'] != $true_pass_md5)
{
// Если была нажата кнопка "вход"
if ( !empty($_POST['submit_login']) )
{
$diag_message = 'Неверный логин или пароль';
}
// Вывод формы для ввода логина и пароля
include "enter.php";
die;
}
?>
|
Этот файл (да и остальные тоже) включается в файл index.php, лежащий в папке admin/ .
<?php
// Работать с панелью администрирования можно только через файл index.php
define('_ADMIN', TRUE);
// Проверка прав доступа
include 'auth.php';
. . . . . .
|
| |
|
|
|
|
|
|
|
для: sasha1133
(25.03.2010 в 10:36)
| | Кстати если найдёте какие то недочёты, будет интересно о них узнать | |
|
|
|
|
|
|
|
для: sasha1133
(25.03.2010 в 10:36)
| | Вы пишите авторизацию на файлах сессии (насколько это целесообразно?)
У вас движок форума или портал или блоговый? | |
|
|
|
|
|
|
|
для: oliss
(25.03.2010 в 10:43)
| | а вообще то (по секрету ) админка не должна быть на вашем хосте (только локально ) ,это спасёт от многих проблем ( ну разве троян насадит ваши пароли от аккаунта FTP на вашей машине с вашего клиента) | |
|
|
|
|
|
|
|
для: oliss
(25.03.2010 в 10:43)
| | нет, у меня простенький сайт, где админ имеет возможность добавлять автомобили на сайт и редактировать тексты. Если интересно, то вот он http://autoprof.by/ (строго не судите - первый сайт) | |
|
|
|
|
|
|
|
для: sasha1133
(25.03.2010 в 10:36)
| | достаточно подобрать за админом его сессионный идентификатор, случайно оброненный, и всё. | |
|
|
|
|
|
|
|
для: Trianon
(25.03.2010 в 10:45)
| | при выходе сессии уничтожаются. А как подобрать сессионный идентификатор ? Если я правильно понял, это сработает, только когда админ авторизован.
Как можно улучшить защиту? Разве куки лучше - они же не у всех включены вроде бы. | |
|
|
|
|
|
|
|
для: sasha1133
(25.03.2010 в 11:07)
| | вчера сидел по разному пробовал. проблема в том что даже куки не выставляются .
заходил с телефона , с линукса, и с другой винды . пробовал разными браузерами, firefox нормально работает . сделал отдельный сценарий www.php чтоб просто отоброзил куки он работает но без time()+360. вставил его в login.php не хочет. на локал хосте всё работает отлично со всеми браузерами. можт серв не так настоен ?
хз из за чего может быть такое вообще не понятно . пойду волшебный бубен делать, можт поможет =( | |
|
|
|
|
|
|
|
для: sasha1133
(25.03.2010 в 11:07)
| | Расскажите, пожалуйста, как php определяет, чью сессию поднимать в скрипте - в ситуации, когда у человека в браузере выключены куки?
и отдельно - часто Вы наблюдали выключенные куки у кого-нибудь? | |
|
|
|
|
|
|
|
для: Trianon
(25.03.2010 в 12:03)
| | >и отдельно - часто Вы наблюдали выключенные куки у кого-нибудь?
да вроде нет. Но я не вижу пока чем куки лучше сессий. Может просвятите?) | |
|
|
|
|
|
|
|
для: sasha1133
(25.03.2010 в 13:04)
| | "просветите"
Сразу, как только Вы ответите на первый вопрос. | |
|
|
|
|
|
|
|
для: Trianon
(25.03.2010 в 14:24)
| | >Расскажите, пожалуйста, как php определяет, чью сессию поднимать в скрипте - в ситуации, когда у человека в браузере выключены куки?
Этот вопрос? Счас почитаю) | |
|
|
|
|
|
|
|
для: sasha1133
(25.03.2010 в 15:32)
| | Ну ,наконец то.
Всё правильно ! | |
|
|
|
|
|
|
|
для: oliss
(25.03.2010 в 16:50)
| | Короче если использовать сессии, то будут использоваться куки для идентифицирования браузера, если куки выключены, то через URL и скрытые поля форм. Кроме того можно настроить эти параметры:
session.use_cookies - если равно 1, то PHP передает идентификатор в cookies, если 0 - то нет.
session.use_trans_sid если равно 1, то PHP передает его, добавляя к URL и формам, если 0 - то нет.
Я правильно понял? И имеется ввиду что человек может оставить где нить ссылку типо такой: index.php?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f ? Просто я думаю админ врятли станет во первых выключать куки, во-вторых давать ссылки кому то на какие то страницы администраторской зоны) У меня вопрос: по ссылке вроде той что я написал можно зайти только до тех пор, пока сессия у админа не закончилась, правильно (пока этот идентификатор актуален)?
PS. Пока не вижу преимуществ кукисов перед сессиями, ведь если не ошибаюсь то:
Авторизация на куках:
+ нельзя оставить небезопасную ссылку типо той что вверху.
- если куки выключены, то авторизация совсем не будет работать
- куки теоретически можно стащить (ну вроде бы)
Авторизация на сессиях:
+ будет работать, если куки выключены
- правда тогда будут небезопасные ссылки
+ зато можно настроить, чтобы работал только на куках (немного радикально - нет куков - нет авторизации, но зато безопасно)
Если ошибаюсь поправьте, этот вопрос очень интересует. | |
|
|
|
|
|
|
|
для: sasha1133
(25.03.2010 в 17:27)
| | Самое главное вы пропустили: сессии живут на сервере ,а куки на клиенте
Делайте выводы. | |
|
|
|
|
|
|
|
для: oliss
(25.03.2010 в 17:30)
| | Это я знаю, кэп) И что с этого? | |
|
|
|
|
|
|
|
для: sasha1133
(26.03.2010 в 00:47)
| | А то, что аутентификация - процесс доказывания серверу клиентом, что он не верблюд.
Как Вы сессиями хоть что-то докажете, если они не у Вас, а у сервера? | |
|
|
|
|
|
|
|
для: Trianon
(26.03.2010 в 00:57)
| | Ключ к сессиям по умолчанию хранится в тех же куках. Только как вариант когда куки выключены - передаются в ссылках и скрытых полях форм. Тем самым имея куку с идентификатором сессии, доказываем серверу, что клиент не верблюд (или наоборот - именно верблюд =) ). Чем плохо? | |
|
|
|
|
|
|
|
для: sasha1133
(26.03.2010 в 01:42)
| | Вот этот самый идентификатор намного легче увести ( хотя, как реализована защита скрипта ), чем куку с вашего компьютера | |
|
|
|
|
|
|
|
для: oliss
(26.03.2010 в 02:39)
| | чем же легче, если и в том и в том случае куки? И всё таки , как можно улучшить защиту? Проверять ip, версию браузера и тп (помимо сессий)? | |
|
|
|
|
|
|
|
для: sasha1133
(26.03.2010 в 01:42)
| | Плохо тем, что механизм идентификации сессии разрабатывался не для задач аутентификации, преследует совершенно иные цели и поэтому в рассматриваемом применении имеет изъяны.
Один из них (связанный с передачей SID в GET-параметрах скрипта) Вы уже подметили.
А кукис можно поставить и более изощренный.
Хотя для жестких ситуаций все равно придется поднимать https | |
|
|
|
|
|
|
|
для: Trianon
(26.03.2010 в 03:45)
| | Понятно. А в чём фишка https? | |
|
|
|
|
|
|
|
|
для: oliss
(26.03.2010 в 13:48)
| | Спасибо | |
|
|
|