Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];

Вниз

А вот как сделано: регистрируешься на каком-нибудь сайте,   Найти похожие ветки 

 
Ega23 ©   (2008-04-02 10:54) [0]

вводишь пароль и ответ на контрольный вопрос. Если забыл пароль - присылают вопрос, ответил - высылают пароль.
Собственно, вопрос: а как тогда этот пароль хранят? Не в открытом же виде...


 
Kolan ©   (2008-04-02 10:55) [1]

> а как тогда этот пароль хранят? Не в открытом же виде&#133

В зашифрованом.


 
Рамиль ©   (2008-04-02 10:58) [2]

В большинстве случаев высалают новый пароль. А старый это от лукавого.


 
Ega23 ©   (2008-04-02 11:02) [3]


> В зашифрованом.
>


интересует алгоритм, который в обе стороны действует.


 
Kolan ©   (2008-04-02 11:03) [4]

> интересует алгоритм, который в обе стороны действует.

xor :)


 
Eraser ©   (2008-04-02 11:08) [5]


> Ega23 ©   (02.04.08 11:02) [3]

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


 
Kolan ©   (2008-04-02 11:09) [6]

> лучше действительно не хранить пароль ни в каком виде

Это, а как тогда при входе проверять пароль?


 
Eraser ©   (2008-04-02 11:09) [7]


> Kolan ©   (02.04.08 11:09) [6]

по хэшу


 
tesseract ©   (2008-04-02 11:22) [8]


> Это, а как тогда при входе проверять пароль?


В *nix и windows  тоже пароли не храняться.  Везде хэши.


 
Kolan ©   (2008-04-02 11:23) [9]

> по хэшу

Согласен, неподумал.


 
Ega23 ©   (2008-04-02 11:31) [10]


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


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


 
Kolan ©   (2008-04-02 11:34) [11]

> Вот сижу, мучуюсь&#133

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


 
Оригинал   (2008-04-02 11:34) [12]


> Мне права пользователей на определённые действия каким-то
> макаром шифровать надо.


Права пользователей на какие действия и в какой системе?


 
DVM ©   (2008-04-02 11:35) [13]


> Если забыл пароль - присылают вопрос, ответил - высылают
> пароль.
> Собственно, вопрос: а как тогда этот пароль хранят? Не в
> открытом же виде...

Чаще всего высылают новый пароль сгенерированный.
А старый могут хранить и незашифрованном виде ибо один фиг если он обратно может быть расшифрован как хранить.


 
Ega23 ©   (2008-04-02 11:40) [14]


> Права пользователей на какие действия и в какой системе?


Ну, условно говоря, так:
есть таблица неких бизнес-действий (Просмотр такого-то отчета, модификация таких-то данных и т.п.). Есть аккаунты пользователей. Вот надо связать аккаунт с бизнес-действиями. При этом разрешено действие, или нет - должно хранится в зашифрованном виде.
Казалось бы самое очевидное - md5(пароль + код действия + true (или false)).
всё прохавается на ура. Только вот администратор тогда права пользователя никак увидеть не сможет... :)


 
Kolan ©   (2008-04-02 11:44) [15]

> Только вот администратор тогда права пользователя никак
> увидеть не сможет&#133 :)

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


 
Ega23 ©   (2008-04-02 11:49) [16]


> Подожди, так а зачем права привязывать к паролю. Права привязыйвай
> к логину (или к группе), который открыто храниться, а пароль
> нужен только чтобы залогиниться.


Ещё раз: права пользователя на бизнес-действия являются секретной информацией. Т.е. сторонний человек, имея прямой доступ к БД, не должен узнать, разрешено ли юзеру с ID=18 бизнес-действие с кодом 55.


 
tesseract ©   (2008-04-02 11:53) [17]


> Т.е. сторонний человек, имея прямой доступ к БД, не должен
> узнать, разрешено ли юзеру с ID=18 бизнес-действие с кодом
> 55.


Ну так шифруй. RC4 например - достаточно шустрый алгоритм.


 
Kolan ©   (2008-04-02 11:54) [18]

> сторонний человек
>md5(пароль + код действия + true (или false)).

А, тут скобочки на все.


 
Alien1769 ©   (2008-04-02 11:55) [19]


> Ещё раз: права пользователя на бизнес-действия являются
> секретной информацией. Т.е. сторонний человек, имея прямой
> доступ к БД, не должен узнать, разрешено ли юзеру с ID=18
> бизнес-действие с кодом 55.

Так шифруй информацию пользователей по главному паролю создателя базы и все !


 
Дмитрий С   (2008-04-02 11:57) [20]


> Только вот администратор тогда права пользователя никак
> увидеть не сможет... :)

Администратор отснифить пароль может. А если еще ЭТО написано на PHP, то и изменить код кое где =)

А так ведь ты же придумал, в чем проблема то???

Кстати а как в твоем случае наградить пользователя правами не зная его пароля??


 
Ega23 ©   (2008-04-02 12:00) [21]


> Кстати а как в твоем случае наградить пользователя правами
> не зная его пароля??


Дык в этом-то и проблема...  :)


 
Ega23 ©   (2008-04-02 12:01) [22]

Кстати, дело даже хуже. Практически любой пользователь должен иметь возможность посмотреть свои текущие права. Изменить - нет, а вот просмотр - пожалуйста.


 
Оригинал   (2008-04-02 12:02) [23]


> Т.е. сторонний человек, имея прямой доступ к БД, не должен
> узнать, разрешено ли юзеру с ID=18 бизнес-действие с кодом
> 55.


Перемешать по некоторому алгоритму строку с правами (например битовую маску прав). Права на расшифровку-прямое выполнение ХП должен иметь только администратор, выполнение ХП разрешено только из прикладного ПО.


 
Kolan ©   (2008-04-02 12:02) [24]

> Кстати, дело даже хуже.

По сути это одно и тоже. Используя хеш ты не можешь восстановить назад все. А [17] неподходит?


 
Оригинал   (2008-04-02 12:04) [25]

Непонятно только, чего тут в трепе ветка делает-)


 
Оригинал   (2008-04-02 12:11) [26]

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


 
Kolan ©   (2008-04-02 12:13) [27]

> Наверное даже проще можно сделать.

Так а как это спасет от прямого доступа к БД, когда я могу наплевать на ХП. Взять и поспотреть что там в таблице UserRight лежит?


 
Ega23 ©   (2008-04-02 12:14) [28]


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


Она тупо не спасёт от прямого селекта из таблицы прав.


 
Оригинал   (2008-04-02 12:14) [29]


> Kolan ©   (02.04.08 12:13) [27]
> > Наверное даже проще можно сделать.
>
> Так а как это спасет от прямого доступа к БД, когда я могу
> наплевать на ХП. Взять и поспотреть что там в таблице UserRight
> лежит?


Перемешать по некоторому алгоритму строку с правами (например битовую маску прав).


 
Оригинал   (2008-04-02 12:14) [30]


> Ega23 ©   (02.04.08 12:14) [28]
>
> > Наверное даже проще можно сделать.
> > Зашифрованная средствами БД ХП должна выдавать список
> прав
> > только админу. Зарегистрированным пользователям - только
>
> > список их прав.
> > Тех, кто не зарегистрирован в БД для использования конкретных
>
> > бизнес-процессов, вообще не получают информации.
>
>
> Она тупо не спасёт от прямого селекта из таблицы прав.


Перемешать по некоторому алгоритму строку с правами (например битовую маску прав).


 
Оригинал   (2008-04-02 12:15) [31]

Реальный список прав можно получить только через ХП.


 
Kolan ©   (2008-04-02 12:16) [32]

> Перемешать по некоторому алгоритму строку с правами (например
> битовую маску прав).

Кстати да. Тогда создасться впечатление, что с правами ничего не делали, но все будет неправильно.

А функцию перемешивания я бы на клиенте сделал.


 
Оригинал   (2008-04-02 12:17) [33]


> А функцию перемешивания я бы на клиенте сделал.

Тогда алгоритм можно определить.


 
Рамиль ©   (2008-04-02 12:36) [34]


> Перемешать по некоторому алгоритму строку с правами (например
> битовую маску прав).

Шифрование через неясность порочно по своей сути.

Может сделать так:

Хэш пароля пользователя является секретным ключом какого либо симметричного алгоритма.
Все хэши паролей пользователей в свою очередь зашифрованы хэшем пароля администратора и хранятся в базе. Т. е. если вводит пароль пользователь, то ключ получается автоматически хэшированием. Если доступ нужен администратору, то расшифровываются ключи пользователей.

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


 
Оригинал   (2008-04-02 12:41) [35]


> Рамиль ©   (02.04.08 12:36) [34]
>
> > Перемешать по некоторому алгоритму строку с правами (например
>
> > битовую маску прав).
>
> Шифрование через неясность порочно по своей сути.


Вряд ли. Алгоритм перемешивания достаточно хранить в секрете и всё.
Не нужно усложнять жизнь. Лучше минимальная достаточность.


 
Ega23 ©   (2008-04-02 12:42) [36]

Интересно. Но есть проблема: под "администратором" я называю того пользователя (или группу пользователей), которым доступно бизнес-действие "изменение прав пользователей"


 
Оригинал   (2008-04-02 12:45) [37]


> Ega23 ©   (02.04.08 12:42) [36]
> Интересно. Но есть проблема: под "администратором" я называю
> того пользователя (или группу пользователей), которым доступно
> бизнес-действие "изменение прав пользователей"


Ну так если администраторы доолжны иметь доступ, надо им дать соответствующие права, включив в отдельную группу.


 
Дмитрий С   (2008-04-02 12:45) [38]

А если сделать так:

В таблицу аккаунтов добавляется  еще два поля:
login_count - увеличивается при каждом входе пользователя
login_count_cs - вычисляется при каждом входе на основе пароля и поля login_count.

Таблица прав пользователей организована как ты сказал:
md5(account_id + right_id + password)

При добавлении какого либо права пользователю в таблицу прав добавляется запись:
md5(account_id + right_id + login_count_cs)

А при каждом входе клиентская часть ищет (перебором видимо придеться, надеюсь прав не так много=) ) все строки, которые соответствуют
md5(account_id + right_id + login_count_cs)
и переделывает их в формат
md5(account_id + right_id + password), зная, конечно пароль (А пароль пользователь только что ввел, для того чтобы войти).

Тем самым у администратора будет очень мало шансов, что либо узнать =)

Можно упростить схему...
Добавлять в таблицу записи вида
md5(account_id + right_id)
и также, при входе пользователя, конвертировать их.


 
Рамиль ©   (2008-04-02 12:46) [39]


> Ega23 ©   (02.04.08 12:42) [36]

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


> Вряд ли. Алгоритм перемешивания достаточно хранить в секрете
> и всё.
> Не нужно усложнять жизнь. Лучше минимальная достаточность.
>

Вот-вот. Также думают все правительственные структуры и корпорации :(


 
Рамиль ©   (2008-04-02 12:49) [40]


> Также думают все правительственные структуры и корпорации
> :(

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



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.046 c
3-1197064145
wipr
2007-12-08 00:49
2008.05.18
Проблема с открытием pFIBDataSet по FB 1.5.1


2-1208850486
AntonUSAnoV
2008-04-22 11:48
2008.05.18
обновление html страниц


3-1192531929
NNH
2007-10-16 14:52
2008.05.18
Таблица из Экселя


15-1207627805
Slider007
2008-04-08 08:10
2008.05.18
С днем рождения ! 8 апреля 2008 вторник


15-1207480308
Real
2008-04-06 15:11
2008.05.18
Может ли Apache отдавать файл с другим именем?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский