Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение к БД MYSQL через хеш 
:(
    Опции темы
bulat01
Дата 8.6.2013, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 26.10.2010

Репутация: нет
Всего: 0



Здравствуйте все,
не знаю как правильно реализовать логику подключения к БД mysql.

db_fns.php 

Код

function db_connect()
{    
    $host = 'localhost';
    $user = 'root_user';
    $pswd = 'root_passwd';
    $db = 'db_name';
  
    $connection = mysql_connect($host, $user, $pswd);       
    mysql_query('SET NAMES utf8');
    
    if(!$connection || !mysql_select_db($db, $connection))
    {
        return false;
    } 
    return $connection;
  }



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

Некоторые советуют хранить файл паролей нужно хранить за пределами document_root.
Но как ее там хранить в хешированном виде? Как тогда на нее ссылаться?
Как такая логика вообще реализуется - подключение к БД через root для возврата данных, 
никакой логики аутентификации для конекта кроме указанного скрипта не используется.

С уважением!

PM MAIL   Вверх
ksnk
Дата 8.6.2013, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(bulat01 @  8.6.2013,  13:49 Найти цитируемый пост)
Некоторые советуют хранить файл паролей нужно хранить за пределами document_root.

Пароли, надеюсь, хранятся в php, а не в текстовых файлах? Если хранить пароли в php файлах, то особой секретности от выбора места хранения не появляется.
Ну вообразим себе, что пароль к базе храниться в совершенно незашифорванном виде в файле
Код

<?php
   $host = 'localhost';
    $user = 'root_user';
    $pswd = 'root_passwd';
?>
 в  database_password.php в корне сайта.
Каким образом хакер может получить информацию из этого файла? Набрав адрес http://mysite/database_password.php он получит, как и ожидалось, не пароли , а совсем даже пустую страничку. 
Если у хакера есть доступ к файлам сайта (хозяин слил в интернет-кафе ftp пароль), то никакого разумного телодвижения, кроме смены всех паролей, совершить уже не получится, все пароли как бы они не были зашифрованы - уйдут.Хакеру достаточно найти место в программе, где пароли уже расшифрованы и отослать их себе/сбросить в лог, который потом утащить.
Хранить информацию ВНЕ web каталога нужно не для секретности, а для удобства работы. 
Ну, это если на сайте нет откровенных дыр в безопасности, которые позволяют читать файлы. Но, и в этом случае и файл "за границей" web каталога не спасёт.
 
Цитата(bulat01 @  8.6.2013,  13:49 Найти цитируемый пост)
Как такая логика вообще реализуется - подключение к БД через root для возврата данных, 

Подключение в DB через root - это УЖЕ большая дыра в безопасности  smile Нужно заводить одного или нескольких пользователей, с разными разрешениями. Админ сайта/посетитель сайта и так далее о надобности.
Если дыра в сайте, через которую можно выполнить произвольный запрос, обнаружится, то ограниченные права не позволят зломуумышленнику прочитать/записать файлы на сайте (mysql это умеет), удалить таблицы из вредности или внести информацию в базу.

Это сообщение отредактировал(а) ksnk - 8.6.2013, 14:59


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mexanika
Дата 8.6.2013, 15:09 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



если db_conn.php на уровень выше папки public_html, а php-файл с подключением к бд в папке public_html. 
Код

require_once "../db_conn.php"
"

db_conn.php:
Код

define("DB_HOST", "localhost");
define("DB_LOGIN", "root");
define("DB_PASSWORD", "root");
define("DB_NAME", "db_name");


можно пропускать через base64_encode/base64_decode только шифруйте с солью, но это через тернии в жопу

Это сообщение отредактировал(а) mexanika - 8.6.2013, 15:23
PM MAIL   Вверх
bulat01
Дата 8.6.2013, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 26.10.2010

Репутация: нет
Всего: 0



Спасибо большое за ответ ,
но у меня никак не получается сделать, т.к я новичок в php

Цитата

можно пропускать через base64_encode/base64_decode только шифруйте с солью, но это через тернии в жопу


Вы не могли бы отписать что куда смотреть (если есть пост, буду благодарен)?

С уважением!
PM MAIL   Вверх
Arantir
Дата 8.6.2013, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Это все "программистская алхимия" новичков.
Чтобы пароль не выдался в описании ошибки, то достаточно отключить вывод ошибок. Это всего-то одна настройка в php.ini. 
Вы не подключитесь к базе, не зная пароля. Значит он в любом случае где-то будет записан. А в функцию он передается в исходном виде. Так что все равно в скрипте будет метод расшифровки хеша. И если кто-то откроет файл скрипта, то никакой хэш и другие ухищрения Вам не помогут. Но дыра с свободным доступом к файлам - это уже другая проблема.

Лучше перейдите на более совершенную библиотеку mysqli вместо mysql и используйте её предподготовленные запросы.
Если вы оставите дыру для sql-иньекции, то пароль взломщику уже не будет нужен, он поломает базу вашими же запросами. А Вы при этом еще будете напрасно думать, что виноват открытый пароль в скрипте...

Это сообщение отредактировал(а) Arantir - 8.6.2013, 17:51


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.