За последние 24 часа нас посетили 19112 программистов и 1644 робота. Сейчас ищут 915 программистов ...

пароль и структура БД

Тема в разделе "PHP и базы данных", создана пользователем selecter, 13 апр 2011.

  1. selecter

    selecter Активный пользователь

    С нами с:
    13 апр 2011
    Сообщения:
    6
    Симпатии:
    0
    Здравствуйте, многоуважаемые!
    Исходные данные:
    1. Есть форма для регистрации юзера на сервере, состоящая, как водится, из логина и пароля
    2. Есть БД (Mysql)
    3. Есть понятное желание сохранять данные, пользователя по его выбору, в куках(?)

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

    НО при этом каждый юзер заходит и работает под одним и тем же логином и паролем (хотя бы даже для того чтобы вытащить хэш из базы).
    То есть я все правильно понимаю? У меня на серваке 100 000 пользователей и все работают под одним и тем же логином БД?
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
  3. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    зависит от архитектуры ресурса. не принято делать на каждого пользователя сайта свой аккаунт для MySQL. тем более, что вы должны понимать, что пользователи работают не с mysql-аккаунтом, а с аккаунтом вашего сайта. а вот ваш сайт работает с mysql-аккаунтом. это вполне обычно. не забивайте себе голову.
     
  4. selecter

    selecter Активный пользователь

    С нами с:
    13 апр 2011
    Сообщения:
    6
    Симпатии:
    0
    Извиняюсь за сбивчивость...
    1. Есть MySql, в которой есть БД mysql, в которой есть, как водится, таблица user, которая хранит данные о всех пользователей всех БД данного сервера mysql
    2. Есть некая БД, назовем ее test_db, в которой есть пользователи (ну хотя бы админ, управляющий только этой базой)-эти пользователи зарегистрированы в СУБД mysql, конкретнее в таблице user базы mysql
    3. Существует некий сайт, который обращается к БД test_db. На этот сайт могут заходить разные люди, их может быть очень много...

    Так вот насколько я понял из прочитанных мной статей, структура БД подразумевает создание всего ОДНОГО пользователя БД mysql (данные которого будут соответственно хранится в таблице user), а в рабочей БД (test_db) должна быть создана спец таблица, в которой будут хранится данные пользователей, регистрирующихся на данном сайте.

    Я и хочу понять - у всех так? или я чего-то не понимаю?
     
  5. selecter

    selecter Активный пользователь

    С нами с:
    13 апр 2011
    Сообщения:
    6
    Симпатии:
    0
    пока писал сообщение - уже практически ответили :)
    А если речь идет о выделенных серверах, то есть БД заточена ТОЛЬКО под конкретный проект?
     
  6. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    1 проект может использовать <= бесконечное число БД
    1 база может снабжать <= 1 проект

    если одна БД используется для 2 и более проектов из цели экономии на хостинге, то это очень плохо. исключения уместны
     
  7. selecter

    selecter Активный пользователь

    С нами с:
    13 апр 2011
    Сообщения:
    6
    Симпатии:
    0
    виноват - выделенные сервера
    соответственно выделенный сервер mysql
    кстати, да, на сервере могут использоваться под один проект и несколько БД
    Если взять гипертрофированный пример - например facebook - то там пользователь когда регистрируется в facebook - он одновременно регистрируется и как пользователь БД или там тоже один аккаунт БД на всех? и для каждого некий ключ в таблице?
     
  8. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    точную архитектуру facebook я не знаю
     
  9. selecter

    selecter Активный пользователь

    С нами с:
    13 апр 2011
    Сообщения:
    6
    Симпатии:
    0
    facebook я взял просто как гипертрофированный пример, но интересен сам принцип работы с БД в приложениях такого уровня. Может кто-нить сталкивался?
     
  10. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    используется скорее всего РБД. MySQL не умеет нативно работать с РБД
     
  11. selecter

    selecter Активный пользователь

    С нами с:
    13 апр 2011
    Сообщения:
    6
    Симпатии:
    0
    любопытно...
    В любом случае спасибо за ответ
     
  12. Villan

    Villan Активный пользователь

    С нами с:
    13 апр 2011
    Сообщения:
    36
    Симпатии:
    0
    В моём php-приложении для каждого аккаунта создаётся MySQL-пользователь.

    И при подключении к MySQL создаётся два подключения: $conn (от имени MySQl-пользователя, соотв. аккаунту) и $conn_admin (с полными возможностями).

    Делается это, конечно, для дополнительной страховки от взлома.
     
  13. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    как показала практика, помогает это только от sql-инжекта, да и то не всегда, поскольку ограничение пользователя на селект не по таблицам, а по конкретным полям таблицы появилась только в поздних версиях MySQL. если у меня есть возможность посмотреть мою личную переписку (mysql-аккаунт позволяет), к примеру, то наверняка у меня есть и возможность с этими же правами получить информацию обо всех остальных записях по тому же полю, а значит я могу вынуть и чужую переписку. то же самое и с настройками и еще невесть чем. поэтому не думаю, что ваш подход верный. у меня в системе архитектурой предусмотрено использование своего mysql-аккаунта на каждый модуль со своими правами. но и этим я пока что не пользуюсь - нет времени прикрутить всё как положено.
     
  14. Villan

    Villan Активный пользователь

    С нами с:
    13 апр 2011
    Сообщения:
    36
    Симпатии:
    0
    А разве этого мало? У меня столько форм и столько взаимодействий с БД, что где-нибудь да фраернусь (особенно при срочной работе).

    А мне хватит разграничения по базам.

    У меня на каждый офис своя база. И боюсь я не какого-то гипотетического хакера со стороны - а директора периферийного офиса с тамошним сисадмином - которые хотели бы прознать, что делается в головном офисе.

    На инжекте и будут меня ловить...