Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Пароль при изменении пользователя должен генериться  [new]
villy_ss
Member

Откуда:
Сообщений: 29
Уважаемые господа,
прошу прощения за ламерский вопрос.
Два часа рою форум, ответа не нахожу :(

Нужно изменить пароль пользователя, но пароль этот взять, скажем, из БД.
Типа такого:

ALTER USER "USER" IDENTIFIED BY (select PASS from STORAGE);

Получаю: ORA-00988: missing or invalid password(s)

Догадываюсь, что нужно пользовать PL/SQL, но чета не понимаю:

DECLARE
X VARCHAR2(100 BYTE);
BEGIN
select PASS into X from STORAGE;
ALTER USER "USER" IDENTIFIED BY X;
DBMS_OUTPUT.PUT_LINE ('ok');
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE
('fuck');
END;

Получаю ошибку:
ORA-06550: line 5, column 4:
PLS-00103: Encountered the symbol "ALTER" when expecting one of the following:...

Намекните плиз куда думать,
а то мы не местные (из-под Access), а это очень надо...

Заранее спасибо!
12 фев 09, 17:05    [6813382]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
villy_ss,

execute immediate 'alter....
12 фев 09, 17:10    [6813418]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
думать в сторону execute immediate
а также, приглядеться, в сторону кавычиков
12 фев 09, 17:11    [6813424]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
expla
Guest
Способ смены пароля

ALTER USER "USER" IDENTIFIED BY X;

фигово защищён. Типа в логе админ может подглядеть и т.п.

Для безопасной смены пароля нужно пользоваться специальными функциями API.
12 фев 09, 17:50    [6813699]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
Подумалось...
Member

Откуда: shared memory realm
Сообщений: 429
expla
Способ смены пароля

ALTER USER "USER" IDENTIFIED BY X;

фигово защищён. Типа в логе админ может подглядеть и т.п.

Для безопасной смены пароля нужно пользоваться специальными функциями API.


А чтобы не быть голословным, ты может еще и лог тот самый назовешь? А то индусы-то Оракловые стараются, из в v$sql и логмайнере alter user'ы c create user'ами поправляют, чтобы нечаянно пароль не показали, а ты на них напраслину возводишь.

Нет, способ-то с oradebug мне известен, но вот применимость его в реальной жизни под большим вопросом.
12 фев 09, 18:00    [6813775]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
expla
Guest
Подумалось...,

IP протокол посниферить можно. Если шифрование трафика не включено пароль будет раскрыт.
12 фев 09, 18:58    [6814011]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
Подумалось...
Member

Откуда: shared memory realm
Сообщений: 429
expla
Подумалось...,

IP протокол посниферить можно. Если шифрование трафика не включено пароль будет раскрыт.


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

Способ как узнать пароль пользователя из базы данных ты назвать можешь? По v$ всяким, ну либо там 'логам' каким секретным? А то интересно же.

Ну или ты не подумав сказал. Тогда прямо так и пиши.
12 фев 09, 19:57    [6814150]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
Подумалось...
Member

Откуда: shared memory realm
Сообщений: 429
И кстати сказать, ты уж объясни тогда, каким образом использование 'специальных функций API' для смены пароля в БД защищает от синффера?
12 фев 09, 19:59    [6814160]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
Мутаген
Member

Откуда:
Сообщений: 719
При смене пароля при помощи API (также как и при логине) в сеть сам пароль не передаётся. С ним происходит магия и потому сниффером пароль получить невозможно.
12 фев 09, 21:22    [6814293]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
villy_ss
Member

Откуда:
Сообщений: 29
Работает! Спасибо!

DECLARE
	X VARCHAR2(100 BYTE);
BEGIN
	SELECT PASS INTO X FROM STORAGE;
	EXECUTE IMMEDIATE 'ALTER USER "USER" IDENTIFIED BY '||X;
	DBMS_OUTPUT.PUT_LINE ('ok');
EXCEPTION
	WHEN NO_DATA_FOUND THEN
	DBMS_OUTPUT.PUT_LINE ('fuck');
END;

А еще один ламерский вопросец.
по идее вот эта строчка должна делать куда-то вывод:
DBMS_OUTPUT.PUT_LINE ('ok');

Я запускаю данный скрипт в Toad и, блин, не вижу куда это выводится.
В окне Output только фраза:
PL/SQL procedure successfully completed.
Запускаю как "Execute as script"
13 фев 09, 09:14    [6815203]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
Иван Помидоров
Member

Откуда: альянс
Сообщений: 1108
villy_ss,

запусти sqlplus, напиши set serverout on и запусти .
13 фев 09, 10:00    [6815403]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
villy_ss,
и поставьте таки вокруг пароля кавычки (а то .. начнётся)
13 фев 09, 11:04    [6815850]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
villy_ss
Member

Откуда:
Сообщений: 29
Иван Помидоров
запусти sqlplus, напиши set serverout on и запусти .
Насколько я понимаю, это чтобы в sqlplus вывод в консоль работал.
А мне бы в Toad настроить...

orawish
и поставьте таки вокруг пароля кавычки (а то .. начнётся)
Прошу прощения?
Э-э-э, что начнется?
Вроде бы нормально работает.
Как поставить? Так:
EXECUTE IMMEDIATE 'ALTER USER "USER" IDENTIFIED BY "'||X||'"';
Ну так ошибка сразу, да и по смыслу как-то не понятно.
Ведь в переменной X собственно пароль и содержится...
Поясните, плиз
13 фев 09, 14:14    [6817353]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
Batsall
Member

Откуда: Москва
Сообщений: 360
Попробуй сменить пароль на начинающийся с цифры и все сам поймешь.
13 фев 09, 14:39    [6817572]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
Meliadus
Member

Откуда: Москва
Сообщений: 6
villy_ss

А мне бы в Toad настроить...

В нижней панели (там где Data Grid), перейти на вкладку DBMS Output и нажать на красную кнопочку (aka "Turn Output On"). В дальнейшем смотреть вывод через эту вкладку.
13 фев 09, 14:46    [6817619]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
expla
Guest
Мутаген
При смене пароля при помощи API (также как и при логине) в сеть сам пароль не передаётся. С ним происходит магия и потому сниффером пароль получить невозможно.


Это я "Искусство взлома" начитался.
13 фев 09, 14:49    [6817642]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
villy_ss
Member

Откуда:
Сообщений: 29
Meliadus
В нижней панели (там где Data Grid), перейти на вкладку DBMS Output и нажать на красную кнопочку (aka "Turn Output On"). В дальнейшем смотреть вывод через эту вкладку.
Спасибо большое!

Batsall
Попробуй сменить пароль на начинающийся с цифры и все сам поймешь
Действительно проблема.

execute immediate 'ALTER USER "USER" IDENTIFIED BY ''||X;
ORA-24337: statement handle not prepared

execute immediate 'ALTER USER "USER" IDENTIFIED BY "'||X||'"';
ORA-00922: missing or invalid option

execute immediate 'ALTER USER "USER" IDENTIFIED BY '''||X||'''';
ORA-00922: missing or invalid option

Рою форум уже пару часов, то ли туплю конкретно, то ли как-то это не совсем просто...
16 фев 09, 09:13    [6822498]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
tst> connect u1/u1@tst
Connected.
tst> create procedure ch_pass(uname varchar2, pass varchar2) as
  2  begin execute immediate 'alter user "'||uname||'" identified by "'||pass||'"';
  3  end;
  4  /

Procedure created.

tst> exec ch_pass('U1', '123')

PL/SQL procedure successfully completed.

tst> connect u1/"123"@tst
Connected.
16 фев 09, 09:23    [6822521]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
villy_ss
Member

Откуда:
Сообщений: 29
Вячеслав Любомудров
begin execute immediate 'alter user "'||uname||'" identified by "'||pass||'"';
Спасибо большое! Я тормоз :)

У меня ж блин вот как было на самом деле, а я не заметил:

execute immediate 'ALTER USER "USER" IDENTIFIED BY TEST"'||X||'"';

Верный вариант:

execute immediate 'ALTER USER "USER" IDENTIFIED BY "TEST'||X||'"';

Спасибо всем большое за помощь!
16 фев 09, 10:32    [6822851]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
hell
Member

Откуда:
Сообщений: 3001
Вячеслав Любомудров
  2  begin execute immediate 'alter user "'||uname||'" identified by "'||pass||'"';


И теперь вводим пароль с двойной кавычкой....
16 фев 09, 11:40    [6823343]     Ответить | Цитировать Сообщить модератору
 Re: Пароль при изменении пользователя должен генериться  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Да ну?
tst> exec ch_pass('U1', 'U123')

PL/SQL procedure successfully completed.

tst> connect u1/u123@tst
Connected.
16 фев 09, 11:41    [6823358]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить