Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF]Walidator dla zahashowanego hasła
amii
post 22.08.2012, 12:40:25
Post #1





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


Robię standardowy formularz zmiany hasła, potrzebuje sprawdzić czy podane stare hasło jest zgodne z tym zapisanym w bazie.
Zend_Validate_Db_RecordExists byłby rozwiązaniem gdyby można mu było dostarczyć zahashowane hasło.

Jak sprawdzić w walidatorze, czy hasło jest zapisane w bazie jeśli w bazie jest w formie: SHA1('constant string from app'.$pass.'some random strong') a user wpisuje w formularzu jako $pass

Ten post edytował amii 22.08.2012, 12:40:54


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
Riggs
post 22.08.2012, 13:16:20
Post #2





Grupa: Zarejestrowani
Postów: 162
Pomógł: 13
Dołączył: 16.06.2007

Ostrzeżenie: (0%)
-----


Coś podobnego robiłem niedawno.
Mam swoją bibliotekę do Zenda która generuje mi odpowiednie hasło. Z tym że ja przed hasłem doklejam sól główną z aplikacji (zapisaną w plikach) a za hasłem unikalną sól dla użytkownika (zapisana w bazie). Nie wiem czy dobrze myślę, ale chyba 'some random string' generujesz za każdym razem (bo wtedy za każdym razem otrzymasz inną wartość hasha)questionmark.gif
Go to the top of the page
+Quote Post
amii
post 22.08.2012, 13:36:34
Post #3





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


Riggs u mnie hashowanie odbywa się tak samo 'constant string from app' jest na stale zapisany w plikach, natomiast 'some random strong' jest generowany losowo jako 50 znakowy ciąg liter, cyfr i znaków specjalnych i jest zapisywany w bazie jako salt. Póżniej obydwa ciągi są doklejane do hasła, heszowane i zapisywane w bazie jako zaszyforwane hasło.
Chcąc to złamać hacker musiałby jednocześnie włamać się do bazy i na serwer ftp oraz zastosować brute force na algorytmie sha1

Potrzebuje jedynie info na temat jak dostarczyć walidatorowi 'obrobione' hasło

Ten post edytował amii 22.08.2012, 13:38:04


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
viking
post 22.08.2012, 13:55:36
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Najlepiej wyjść z założenia że to co robisz jest błędne smile.gif Standardem w takiej sytuacji jest raczej zapisanie tego nowego hasła bez martwienia się jak złamać własną metodę hashowania.


--------------------
Go to the top of the page
+Quote Post
amii
post 22.08.2012, 15:13:36
Post #5





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


Problem prawie rozwiązany. Zrobiłem tak:
1. Filtr w My_Filters_Hash
  1. class My_Filters_Hash implements Zend_Filter_Interface
  2. {
  3. public function filter($value)
  4. {
  5. $m = new Application_Model_DbTable_Users();
  6. $sql = 'SELECT salt FROM users WHERE id = ?';
  7. $id = Zend_Auth::getInstance()->getIdentity()->id;
  8. $salt = $m->getAdapter()->fetchOne($sql, $id);
  9. $valueFiltered = sha1(Zend_Registry::get('salt') . $value . $salt);
  10.  
  11. return $valueFiltered;
  12. }
  13. }


Filtr podłączony pod pole tylko problem jest taki, że do pola formularza zwraca zahaszowaną wartość zakładam, że to jest hash dla pustej wartości. Kiedy zwrócę z filtra pustą wartość to wtedy nic nie jest widoczne.

EDIT: jak formularz się żle zwliduje trzeba bylo dać przed przekazaniem do widoku, teraz śmiga:
  1. $form->setElementFilters(array());
  2. $this->view->form = $form;


Ten post edytował amii 22.08.2012, 15:40:33


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
Riggs
post 23.08.2012, 10:02:06
Post #6





Grupa: Zarejestrowani
Postów: 162
Pomógł: 13
Dołączył: 16.06.2007

Ostrzeżenie: (0%)
-----


Ja akurat nadpisałem metodę isValid formularza i w niej pobieram oba hashe, generuję skrót i zwracam TRUE albo FALSE (dodając komunikat o niezgodności haseł).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.06.2025 - 16:52