Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844

Защита админ блока

29.12.2009, 20:31. Показов 2338. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
создал сайт (регистрации не имеет). И отдельный админ блок для сайта, для добавления новостей...

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

Вот скрипт

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
 
include("confing.php");  // база 
 
if (!isset($_SERVER['PHP_AUTH_USER']))
 
{
        Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
        Header ("HTTP/1.0 401 Unauthorized");
        exit();
}
 
else {
        if (!get_magic_quotes_gpc()) {
                $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
                $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
        }
 
        $query = "SELECT pass FROM admin WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
        $lst = @mysql_query($query);
 
        if (!$lst)
        {
            Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
        Header ("HTTP/1.0 401 Unauthorized");
        exit();
        }
 
        if (mysql_num_rows($lst) == 0)
        {
           Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
           Header ("HTTP/1.0 401 Unauthorized");
           exit();
        }
 
        $pass =  @mysql_fetch_array($lst);
        if ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
        {
            Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
           Header ("HTTP/1.0 401 Unauthorized");
           exit();
        }
 
 
}
 
?>

база:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$host = 1;
$user = 1;
$pass = 1;
$db = 1;
 
 
 
mysql_connect($host, $user, $pass);
mysql_select_db($db);
 
 
?>
Подключил скрипт например к ndex.php в админ блоке, а он ругает:


Warning: Cannot modify header information - headers already sent by (output started at S:\home\studia.ru\www\admin\confing.php: 14) in S:\home\studia.ru\www\admin\lock.php on line 24

Warning: Cannot modify header information - headers already sent by (output started at S:\home\studia.ru\www\admin\confing.php: 14) in S:\home\studia.ru\www\admin\lock.php on line 25



самый прикол, если убрать include("confing.php"); // база , то браузер запрашивает пароль и логин.


таблица admin с логином и паролем в базе:
id 1
login 1
pass 1
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.12.2009, 20:31
Ответы с готовыми решениями:

Защита админ панели:)
Здравствуйте!)) У меня как бы не стандартная просьба) Я разрабатывать сайты на php не умею, только учусь. Так вот, написал я...

когда устонавилваю убунту комп пишет что я не админ компа... а я админ!!! в чём дело?
когда устонавилваю убунту комп пишет что я не админ компа... а я админ!!! в чём дело?

Защита силовых трансформаторов на базе блока контроля Sepam 2000 D31 (Schneider)
Помогите пожалуйста найти как работает эта схема.В инете куча этих схем и нет описания что и как работает(при каких та например аварийных...

11
Программист
 Аватар для motakuji
107 / 111 / 9
Регистрация: 27.09.2009
Сообщений: 331
29.12.2009, 22:03
значит так,ошибку выдаёт потому,что выводится что-то в браузер до посылки header.Это не допустимо.Может у тебя пробел перед кодом выводится.Посмотри.И я бы сделал по другому:
Если брать самый простой вариант,то можно сделать так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
session_start();
if (isset($_POST['login'])){
$sql="SELECT * FROM users WHERE login='".$_POST['login']."' AND pass='".$_POST['pass']."'";
$result=mysql_guery($sql);
if (mysql_num_rows(result)>0){ $_SESSION['auth']=true; }
}
if (!isset($_SESSION['auth']) || $_SESSION['auth']!=true){
?>
<form method="post">
<input type="text" name="login">
<input type="password" name="pass">
<input type="submit">
</form>
<?php
}
else{
?>
 
Тут пишешь весь код своей админки
 
<?php
}
?>
1
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
30.12.2009, 03:28  [ТС]
я просто уже полный блок админки создал, как отдельный сайт, по этому примеру прийдется переписывать =(

кстати оно все стоит нормально, если сделать так например

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
 
//include("confing.php");
 
$host = localhost;
$user = studia;
$pass = 123456;
$db = studia;
 
 
 
mysql_connect($host, $user, $pass);
mysql_select_db($db);
 
 
 
if (!isset($_SERVER['PHP_AUTH_USER']))
 
{
        Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
        Header ("HTTP/1.0 401 Unauthorized");
        exit();
}
 
else {
        if (!get_magic_quotes_gpc()) {
                $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
                $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
        }
 
        $query = "SELECT pass FROM admin WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
        $lst = @mysql_query($query);
 
        if (!$lst)
        {
            Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
        Header ("HTTP/1.0 401 Unauthorized");
        exit();
        }
 
        if (mysql_num_rows($lst) == 0)
        {
           Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
           Header ("HTTP/1.0 401 Unauthorized");
           exit();
        }
 
        $pass =  @mysql_fetch_array($lst);
        if ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
        {
            Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
           Header ("HTTP/1.0 401 Unauthorized");
           exit();
        }
 
 
}
 
 
 
 
?>
но высвечивается окно, но логин 1 и пароль 1 не подходят

Добавлено через 4 часа 51 минуту
все разобрался, проблема была в других подключенных блоках
0
Программист
 Аватар для motakuji
107 / 111 / 9
Регистрация: 27.09.2009
Сообщений: 331
30.12.2009, 13:46
это всё хорошо,но у тебя пароль в незащищённом виде хранится. Саветую тебе хешировать его. А ещё лучше,если ещё и посолить))
1
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
30.12.2009, 13:55
Цитата Сообщение от motakuji Посмотреть сообщение
это всё хорошо,но у тебя пароль в незащищённом виде хранится. Саветую тебе хешировать его. А ещё лучше,если ещё и посолить))
может еще стоит использовать md5
1
Программист
 Аватар для motakuji
107 / 111 / 9
Регистрация: 27.09.2009
Сообщений: 331
30.12.2009, 17:14
Цитата Сообщение от mamedovvms Посмотреть сообщение
может еще стоит использовать md5
Прочитай что я написал.Я же написал,что ХЕШИРОВАТЬ(это и есть md5),а каким алгоритмом-это уже по выбору.Можно использовать комбинацию нескольких алгоритмов шифрования,или несколько кратное шифрование алгоритмом md5. Его плюс в том,что это шифрование необратимое.Но в сети существует огромное множество ресурсов с хешами,вставив в кот любой хеш,получишь исходный код через пару сек. Поэтому я посоветовал не просто шифровать каким-то алгоритмом,но и ещё соль использовать.Получив такой хеш не так то просто будет его дешифровать.
1
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
30.12.2009, 17:45
Цитата Сообщение от motakuji Посмотреть сообщение
соль
что это такое?))Вернее что это означает в php?а не на кухне)
1
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
30.12.2009, 18:07  [ТС]
да, я пароль в md5 храню, просто во время теста скажем так упрощенно работаю...
0
Программист
 Аватар для motakuji
107 / 111 / 9
Регистрация: 27.09.2009
Сообщений: 331
30.12.2009, 18:28
Цитата Сообщение от romchiksoad Посмотреть сообщение
что это такое?))Вернее что это означает в php?а не на кухне)
Я про это уже не раз отписывался на этом форуме. Над мне написать статью в куда-нить выложить и ссылки выдавать. Давай я выложу пример кода,если будут вопросы,то пишите,я отвечу.
PHP
1
2
3
4
5
6
7
8
9
for($i=0;$i<6;$i++){ // создаём произвольные символы
            $rand=rand(180,200);
            $salt.=chr($rand);
        }
 
$pass=md5(md5($pass.$salt));//Ну это объяснять я думаю не нужно
 
$sql="INSERT INTO `users` ( `id` , `login` , `passw` , `salt`) VALUES ('','$login', '$pass', '$salt')";
$result=mysql_query($sql);
Вот простой пример. Можно изощиряться как хотите.Включайте фантазию
1
vvvlad
08.03.2014, 00:32
Всем привет!
Подскажите как быть. Я создал защиту админки по коду из этой темы. Все заработало: браузер запросил логин и пароль я их ввел и попал на свою страницу. Вот только вопрос встал - а как выйти то теперь из админки? Просто закрыть браузер не помогает, т.к. в нем сохранены данные доступа. По идее неплохо создать кнопку или ссылку "выйти" чтобы логин и пароль сбросить. Может быть подскажите как это организовать? (нужен код)

Спасибо!
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
08.03.2014, 12:35
Цитата Сообщение от vvvlad Посмотреть сообщение
Просто закрыть браузер не помогает, т.к. в нем сохранены данные доступа.
телепатор говорит, что это сookie-файлы.
PHP
1
2
3
4
5
6
7
// Срок истекает через час (60 seconds * 60 minutes = 3600)
setcookie('user_id', $user_id, time() + 3600);
// Этот код просто удаляет cookie-файл, поскольку в нем указано уже
// прошедшее время истечение срока
setcookie('user_id', $user_id, time() - 3600);
// Установка по умолчанию: срок истекает с закрытием браузера
setcookie('user_id', $user_id, 0);
Удаляеш сookie и переходиш на страницу, например
PHP
1
header("Location: show_user.php");
Добавлено через 24 минуты
PHP
1
2
3
4
5
6
<?php
session_start();
unset($_SESSION['user_id']);//очищаем сессию
header('Location: signin.php');//переходим на страницу
exit();
?>
0
 Аватар для nepster
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
08.03.2014, 14:50  [ТС]
Эта тема 2009 года. Сейчас оперироваться на нее не стоит.

Лучше глянуть курс специалист ру по php или по какому-то фраэмворку. На том же рутрекере есть.

Рекомендую yii2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.03.2014, 14:50
Помогаю со студенческими работами здесь

"Защита" на нажатие одного блока от другого
Добрый день уважаемые форумчане. Начал верстать сайт и столкнулся с такой проблемой: есть блок, в котором хранится форма для ввода данных: ...

Защита программы от НСД. Защита путем шифрования части программы на флеш-диске или флешке
Написать программу на любом известном Вам языке программирования. Программа должна выполнять функцию защиты программы от НСД. Защита...

Внутри родительского блока сделать отступ дочернего блока сверху автоматически
Здравствуйте, как с помощью css внутри родительского блока сделать отступ дочернего блока сверху автоматически? margin-top в процентах...

В нижней части верхнего блока не до конца отображается цвет блока
Всем привет. Возникла такая проблема. Использую DLE 9.7 На сайте в поставил блок с рекламой, но он идёт впритык с верхним блоком + в...

Смещение внутри блока, другого блока, без изменения первого
Возможно ли такое? Есть блоки &lt;ul id=&quot;navigation&quot;&gt; &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;div id=&quot;line_fx&quot;&gt;&lt;/div&gt; Домой&lt;/a&gt;&lt;/li&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru