Вопрос к специалистам в разработке веб-приложений и бизнес...
8 сентября 2011 в 14:57

Вопрос к специалистам в разработке веб-приложений и бизнес аналитикам

Профи, нужны Ваши советы.
Работой с веб: создание и т.п. до сего дня не занимался. Безусловно бюудет привлекаться программист/программисты профессионалы, но на данном этапе необходима консультация: мне самому необходимо разобраться.
Вкратце суть идеи:
Создаётся веб-сервис.
Функционал понятен и речь не о нём.
Необходимо обеспечить доступ к информации пользователя только того пользователя, которому она принадлежит.
Пользователей может быть много.
Какие-то данные у них могут совпадать (теоретически, например, какой-то набор символов).
Так вот и необходимо обеспечить разграничение доступа.
То есть, чтобы к информации одного пользователя не имел доступ другой.
Чтобы даже если набор символов в обрабатываемых данных (не идентификатор пользователя, а тех данных, которое пользователь предоставлет для обработки) у разных пользователей совпал, то доступ к этим данных должен иметь только тот, кому они принадлежат: каждый к своей части.
Буду благодарен за советы.
Готов побеседовать он-лайн и оффлайн.
Крайне интересен опыт (реальный опыт тех, кто действительно занимался данным вопросом) в Яндексе и других платных сервисах — там, думается, к данному моменту относятся достаточно серьёзно.
Интересует не то чтобы передрать, а именно чтобы не изобретать велосипед.

150
Комментарии (17)
  • 8 сентября 2011 в 16:19 • #
    Игорь Варгафтик

    Виктор, это тривиальная задача, и она решается программистом на стадии программирования сервиса.
    Для Вас главное прописать в ТЗ на создание сайта роли пользователей, например: гость (не зарегистрированный пользователь), пользователь (рядовой пользователь, прошедший регистрацию), модератор, администратор и т.д.

    Далее прописываете "видимость" разделов сайта для каждой из ролей:
    гость - видит только главную страницу, новости, страницу с контактными данными фирмы
    пользователь - видит все что видит гость+ свои данные+...

    и т.д.

  • 8 сентября 2011 в 16:48 • #
    Виктор Шиков

    Игорь, тут видится немного не так.
    Если бы надо было просто обеспечить доступ, типа интернет-магазина или к "своей страничке", то решается именно так, как Вы описали.
    Просто возникло сомнение, после общения с несколькими специалистами в реализации задачи таким способом.
    А задача именно в том, чтобы, грубо говоря, один клиент не видел данные, загруженные другим клиентом.

  • 9 сентября 2011 в 03:11 • #
    Александр Поддубский

    ну так Вам четко ж и сказали что нужно сделать. Все решается на уровне ролей

  • 9 сентября 2011 в 09:53 • #
    Виктор Шиков

    Александр, на другом форуме мне также чётко сказали, что требуется vpn шифрование.
    Я сейчас пытаюсь определить как можно сделать достаточно надёжно, но в то же время без избыточных затрат.
    Если можно обойтись ролями - отлично.
    но мне уже и https, и ssl советовали.
    Так что я пытаюсь сейчас разобраться и понять: каким образом реализовывать, кто мне нужен и какой квалификации.

  • 9 сентября 2011 в 10:10 • #
    Игорь Варгафтик

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

    Загружаемый пользоователем материал попадает в таблицу с привязкой к его ID. Скрипт проверяет ID и дает доступ к материалам или отказывает в доступе.
    Это один из способов. Просто нужно понимать, к каким конкретно материалам Вы хотите закрывать доступ.

  • 9 сентября 2011 в 10:20 • #
    Виктор Шиков

    Игорь, что-то подобной у меня сначало и было в мыслях. Но вот начал спрашивать совета и мне такого накидали...
    Если кратко, есть 2 клиента, они загружают данные, каждый свои. Допустим, - справочник товара.
    задача:
    1. Каждый из них должен видеть только СВОИ данные.
    2. Если идентификатор товара (совершенно случайно)- ID или артикул или что-то ещё совпало, то они всё равно видять ТОЛЬКО свои.

  • 9 сентября 2011 в 10:34 • #
    Игорь Варгафтик

    Виктор, еще раз повторю. Все данные записываются в таблицу:
    ID пользователя - загруженные им данные. Проверка скриптом идет не по данным, а по ID пользователя. Совпал ID - даем доступ к его материалам.

  • 9 сентября 2011 в 10:47 • #
    Виктор Шиков

    А если у двух ID пользователя совпали ID товаров в КИС(причём не факт, что это - реально один и тот же товар)?
    Не случится ли так, что они оба будут видеть суммарные данные по своему товару и товару 2-го клиента?

  • 9 сентября 2011 в 10:56 • #
    Игорь Варгафтик

    Виктор, ID - это уникальный номер пользователя, который присваивает ему система при регистрации. Он не может быть одинаковым у двух пользователей. Скрипт проверяет только ID пользователя, грубо говоря, первую колонку в таблице. Проверка не ведется по артикулам или еще по каким-то другим данным.

  • 9 сентября 2011 в 11:08 • #
    Виктор Шиков

    ID пользователя - да, тут понятно, что он уникален, как я понимаю, что если, грубо, двухуровневая идентификация: пользователь-товар, то пользователь 1 - товар 1 и пользователь 2- товар 1:
    - не увидят суммарные данные по обоим пользователям, несмотря на совпадение товаров?
    - не увидят данные другого пользователя при несовпадении ни в каком случае?

  • 9 сентября 2011 в 11:16 • #
    Игорь Варгафтик

    Конечно не увидят.
    Например, тут, на сайте, пока Вы не вступите в группу, Вы не видите закрытые конференции. При вступлении в группу, Ваш ID попадает в таблицу допущенных к группе пользователей.
    Когда Вы пытаетесь войти в закрытую конференцию, скрипт проверяет, есть ли Ваш ID в таблице пользователей, имеющих доступ. Так же примерно будет реализовано у Вас на сайте.

  • 9 сентября 2011 в 11:27 • #
    Виктор Шиков

    Игорь, но тут помимо моего уникального ID, еще и ID групп уникален.
    Там же может оказаться (вероятность есть), что при уникальности ID клиента/пользователя не уникальный ID товара, т.к. ID товара загружается из КИС пользователя.
    Т.е. теоретически вероятность совпадения ID товара у разных клиентов есть и она значима.

  • 9 сентября 2011 в 11:36 • #
    Игорь Варгафтик

    Что такое КИС?
    Скрипт не проверяет на совпадение ТОЛЬКО ID пользователя. Причем тут ID товаров?

    Если на то пошло, сделайте ID пользователей и ID товаров в разном формате, чтобы наверняка не был совпадений. Пусть к ID товара добавляется любая буква, например, А-12345, а ID пользвателя будет в формате 12345.

    И вообще, зачем Вам лезть в эти дебри? Ставьте задачу программисту, он сам решит, каким способом ее реализовать.

  • 9 сентября 2011 в 11:52 • #
    Виктор Шиков

    КИС - корпоративная информационная система, грубо говоря - учётная система компании.
    Ок. Спасибо. Буду думать.
    Лезу в дебри, т.к. эта проблема может выйти боком, если не продумать её сразу. Ну и надо понять как ставить задачу. ))
    С функционалом всё понятно, а вот клиентская часть...
    Вот и пытаюсь разобраться. Как задачу ставить.

  • 9 сентября 2011 в 10:21 • #
    Виктор Шиков

    Возможно, есть что-то готовое на рынке и т.п., чтобы не заморачиваться этим вопросом, а просто адаптировать.?

  • 9 сентября 2011 в 10:36 • #
    Игорь Варгафтик

    Готового ничего нет, т.к. каждый сайт разрабатывается отдельно, у каждого свои таблицы данных, и скрипт нужно писать именно под данные таблицы.

  • 9 сентября 2011 в 10:48 • #
    Виктор Шиков

    Ок, это понял.