Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Загрузка фото на сайт через админку

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Konstantin_KOT
Отправлено: 28 Января, 2015 - 20:13:28
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




ПредВопрос к модераторам - ошибся в названии темы, как поменять?

Здравствуйте, необходимо защитить админку (выбрал вариант через lock.php), и у меня есть 3 вопроса:

1. Сам файл lock.php у меня есть, но у меня есть подозрения что он старый, в том отношении, что при входе в админку браузер постоянно выдаёт сообщения что пароль будет передан в незашифрованном виде.

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

PHP:
скопировать код в буфер обмена
  1.  
  2. include("db.php");
  3. if (!isset($_SERVER['PHP_AUTH_USER'])) {
  4.         Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
  5.         Header ("HTTP/1.0 401 Unauthorized");
  6.         exit();
  7. } else {
  8.         if (!get_magic_quotes_gpc()) {
  9.                 $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
  10.                 $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
  11.         }
  12.         $query = "SELECT pass FROM user_list WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
  13.         $lst = @mysql_query($query);
  14.  
  15.         if (!$lst) {
  16.             Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
  17.         Header ("HTTP/1.0 401 Unauthorized");
  18.         exit();
  19.         }
  20.         if (mysql_num_rows($lst) == 0) {
  21.            Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
  22.            Header ("HTTP/1.0 401 Unauthorized");
  23.            exit();
  24.         }
  25.         $pass =  @mysql_fetch_array($lst);
  26.         if ($_SERVER['PHP_AUTH_PW']!= $pass['pass']) {
  27.            Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
  28.            Header ("HTTP/1.0 401 Unauthorized");
  29.            exit();
  30.         }
  31. }
  32.  


2. В админку будут иметь доступ 10-12 пользователей, 1 из них будет иметь доступ ко всему, остальные должны только добавлять и редактировать информацию, без возможности её удалять и вообще видеть некоторые пункты админки (например статистику). Эту проблему я могу решить просто через ту же таблицу user_list скрыв для них те или иные пункты меню. Но это не серьёзно и мне кажется опасно. Так что видимо придётся решать проблему создавая для каждого отдельного пользователя базы со своими правами доступа

Я вообще, в верном направлении мыслю?

3. И в связи с этим третий вопрос, если пользователю необходимо дать права только для:

- просмотра СВОИХ полей в базе (как это в РНР решить я понимаю)
- добавления в базу
- редактирования

Всё, ни удаления ни чего прочего. Так вот, какие поля привилегий выбирать при создании нового пользователя базы (их там очень много - я в них путаюсь)?

(Отредактировано автором: 28 Января, 2015 - 20:15:14)

 
 Top
zloy dyx
Отправлено: 28 Января, 2015 - 23:38:23
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Авг. 2014  
Откуда: Германия


Помог: 0 раз(а)

[+]


парень не используй это.... У тя если есть регистрация на сайте то в таблицу юзеров добавь столбец adm и тем у кого к примеру 111 в профиле выводишь ссылку на их админку (if в помощь) ну а в файлах админке проверяй
PHP:
скопировать код в буфер обмена
  1.  
  2. if($user['adm'] == "111")
  3. {
  4. тут код админки.
  5. }
  6. else{exit;}
  7.  

Ну а админка это просто набор действий с бд
 
 Top
Konstantin_KOT
Отправлено: 29 Января, 2015 - 09:31:16
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




zloy dyx пишет:
парень не используй это.... У тя если есть регистрация на сайте то в таблицу юзеров добавь столбец adm и тем у кого к примеру 111 в профиле выводишь ссылку на их админку (if в помощь) ну а в файлах админке проверяй
PHP:
скопировать код в буфер обмена
  1.  
  2. if($user['adm'] == "111")
  3. {
  4. тут код админки.
  5. }
  6. else{exit;}
  7.  

Ну а админка это просто набор действий с бд



Спасибо, просто, логично и вроде понятно.

Но как сделать так, чтобы пароль передавался в зашифрованном виде?

(Отредактировано автором: 29 Января, 2015 - 09:32:09)

 
 Top
esterio
Отправлено: 29 Января, 2015 - 11:06:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




1. сделайте нормальную форму и используйте сессии. для передачи данных в зашифрованном виде используйте HTTPS
2. сделайте просто поле в таблице пользователей куда будете вписивать роль пользователя
administrator
moderator
user
3. те права которые считаете будут в большинстве случаев
 
 Top
Konstantin_KOT
Отправлено: 29 Января, 2015 - 12:22:42
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




esterio пишет:
1. сделайте нормальную форму и используйте сессии. для передачи данных в зашифрованном виде используйте HTTPS
2. сделайте просто поле в таблице пользователей куда будете вписивать роль пользователя
administrator
moderator
user
3. те права которые считаете будут в большинстве случаев


Имеются ввиду эти строки?

PHP:
скопировать код в буфер обмена
  1. RewriteEngine On
  2. RewriteCond %{HTTPS} off
  3. RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}


Это то, что я нарыл в сети, это куда прописывать, в lock.php?

Ещё, я что-то слышал про md5 шифрование...

ЗЫ: уж простите если вопросы выглядят глупо, в РНР я только начинаю, а с необходимостью обеспечить безопасность вообще в первый раз столкнулся.
 
 Top
esterio
Отправлено: 29 Января, 2015 - 13:44:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Konstantin_KOT пишет:
Это то, что я нарыл в сети, это куда прописывать, в lock.php?

Распечатайте на принтере lock.php и сожгите. ну чесно не используйте эго. Он создан по урокам Попова который известен плохим качеством кода.
Konstantin_KOT пишет:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Это htaccess. и он делает ровным счетем ничего с того, что вам нужно
Konstantin_KOT пишет:
Ещё, я что-то слышал про md5 шифрование...

это не шифрирование а хэширование. Это разные вещи

Сделайте хоть как нибуть регистрацию и авторизацию, а потом уже доделивайте безопасность
 
 Top
Konstantin_KOT
Отправлено: 29 Января, 2015 - 14:21:43
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




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

esterio пишет:

Сделайте хоть как нибуть регистрацию и авторизацию, а потом уже доделивайте безопасность


В том то и дело, на сайт будет иметь доступ только 10 человек. Один имеет полный доступ, остальные девять ограниченный. В смысле администрирования.

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

Зачем мне регистрация на сайте? Я спокойно пропишу в базе эти 10 админов вручную...

Может мы просто недопоняли друг друга, и под формой регистрации мы понимаем разные вещи...

ЗЫ: у вас наверняка в этом много опыта, и накопилось много кода который вы могли бы вставить сюда для примера с коротенькими комментами, вот тут делаю это, это берётся отсюда и т.д. а я уже обложусь рнр учебниками, более подробно узнаю разберусь...
 
 Top
esterio
Отправлено: 29 Января, 2015 - 14:34:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Konstantin_KOT
Я пользуюсь фреймворком, который умеет все это делать за меня.
Если вы спокойно можете записать всех админов в базу, так в чем тогда проблема. проверить залогинен ли пользователь и имеет ли он права на действие? если да, то выше описал.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `id`, `username`, `role` FROM `users` WHERE `username`= :username AND `password` = :password LIMIT 1


PHP:
скопировать код в буфер обмена
  1. $_SESSION['user_data'] = $user_data;
  2. if($_SESSION['user_data'] ['role'] !== 'moderator')
  3. {
  4.     die('Permission denied');
  5. }
  6.  
 
 Top
Konstantin_KOT
Отправлено: 29 Января, 2015 - 14:55:53
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




esterio пишет:
Konstantin_KOT
Я пользуюсь фреймворком, который умеет все это делать за меня.
Если вы спокойно можете записать всех админов в базу, так в чем тогда проблема. проверить залогинен ли пользователь и имеет ли он права на действие? если да, то выше описал.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `id`, `username`, `role` FROM `users` WHERE `username`= :username AND `password` = :password LIMIT 1


PHP:
скопировать код в буфер обмена
  1. $_SESSION['user_data'] = $user_data;
  2. if($_SESSION['user_data'] ['role'] !== 'moderator')
  3. {
  4.     die('Permission denied');
  5. }
  6.  


То есть просто через обычный метод POST отправляю запрос в таблицу юзеров, если совпадает, пускаю в админку, так?

Звучит крайне логично и просто, но как-то "сыкотно", а как нибудь обезопасить пароль тем же хэшированием? Что бы один админ с огр.правами не получил доступ к редактированию объектов другого (как в рнр это решить я знаю), на этом сайте такой нюанс есть, это риэлторское агенство... мало ли, вдруг взломает, если совсем без защиты, а только через "иф-елсе"
 
 Top
esterio
Отправлено: 29 Января, 2015 - 15:02:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




знаєте я вот не люблю когда новички беруться за более-менее серйозное задание для себя и еще берут за это деньгы. но да можно захешировать пароль. самый простой вариант
 
 Top
Sail
Отправлено: 29 Января, 2015 - 15:11:23
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Konstantin_KOT пишет:
Звучит крайне логично и просто, но как-то...

Возможно, часть вопросов снимет следующая информация: PHP: Безопасность.
 
 Top
Konstantin_KOT
Отправлено: 29 Января, 2015 - 15:12:01
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




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


Не беру я за это деньги, с другом риэлторское агенство открываем, у него опыт в недвижимости, у меня в веб-дизайне. Несколько несложных сайтов я до этого сделал. Но это да, действительно первая серьёзная моя работа в рнр. Мне тяжело. Но я быстро учусь, осталось, кстати, только обезопасить админку и сделать загрузку фоток на сайт. В остальном сайт готов.

Но в любом случае, спасибо вам за помощь, сейчас сяду и буду разбираться, думаю получится...
 
 Top
Konstantin_KOT
Отправлено: 29 Января, 2015 - 18:27:14
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




Сделал по аналогии с вашей подсказкой- заработало. Делал так-

С сайта посредством post летят user и pass. Переводятся в обычные переменные после разных проверок. Запрос, массив ... потом строки почти по аналогии с вашим примером. Проверяю соответствие role.

Всё это работает прекрасно, и как надо. Но над сайтом появляются 2 warning'a. ругаются на строку

session_start ()

Если убираешь эту строку работает так же хорошо и ошибок не выдаёт.

ЧЕГО НЕ ХВАТАЕТ В ЭТОЙ СТРОКЕ?

предупреждения такие:

Cannot send session cookie - headers already sent by (...

Cannot send session cache limited - headers already sent (...

ЗЫ: я прекрасно понимаю что вместо всей этой писанины надо бы вставить код, но у меня уже час как инет на ровном месте куда то пропал- пишу с телефона Недовольство, огорчение
 
 Top
esterio
Отправлено: 29 Января, 2015 - 19:20:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




session_start должен быть в самом начале ДО вывода
 
 Top
Konstantin_KOT
Отправлено: 29 Января, 2015 - 20:12:47
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




esterio пишет:
session_start должен быть в самом начале ДО вывода


Всё, вроде всё наладил хоть так и не понял куда вставлять

$pass = md5($pass);
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB