Moja pierwsza strona w yii

Postanowiłem się przez 2 dni uczyć się yii. Oto efekt:

http://zegar.ksu.pl/bazaHasel/

Jest w niej jeszcze kilka błędów. Mianowicie, po zalogowaniu i dodaniu co najmniej dwóch haseł do tabeli sortowanie po login DESC nie dziala.

Nie wiedziałem jak zrobić aby w




<?php echo CHtml::activeLabelEx($hasla,'haslo'); ?>

<?php echo CHtml::activeTextField($hasla,'nazwa',array('size'=>50,'maxlength'=>50)); ?>



zmienić napis wyświetlania przy polach input tak aby nie stracić właściwości activeLabelEx czyli np * lub podświatlania przy validacji.

Chciałbym abyście też pokazali jak wyglądały wasze pierwsze projekty w yii.

ps. dla Adminów: link do strony nie dałem aby ją pozycjonować. Jeżeli trzeba dodajcie w kodzie rel="nofollow"

Na przykład literówka w pierwszym zdaniu :P .

Może ktoś inny będzie w stanie pomóc. Akurat popsuła mi się magiczna kula i bez kodu źródłowego, a przynajmniej jego części odpowiedzialnej za generowanie linku sortowania kolumny login ani rusz :) .

Przejrzyj kontroler "hasla" a tam akcję "admin". Sprawdź też swój model. Problem polega na tym, że CSort generuje zły link. Zamiast parametru sort=login.desc daje sort=login-login.

Zanim jednak zabierzesz się za poprawianie sortowania, popraw koniecznie nazwy właściwości w modelu, bo jest możliwe, że to właśnie powoduje błąd sortowania. Tzn:




          <?php echo CHtml::activeLabelEx($hasla,'haslo'); ?>

          <?php echo CHtml::activeTextField($hasla,'nazwa',array('size'=>50,'maxlength'=>50)); ?>

obydwa elementy powinny dotyczyć tej samej właściwości więc drugi parametr musi być taki sam. Jeżeli chcesz zmienić to co będzie wyświetlone na stronie musisz nadpisać metodę attributeLabels() danego modelu. Metoda ta zwraca tablicę zawierającą pary "nazwaWłaściwości"=>"Etykieta widoczna na stronie". Na przykład:




      public function attributeLabels()

          {

              return array(

                  'Haslo2'=>'Powtórz hasło',

              );

          }

      

No super pomysł, zastanwaia mnie tylko jak trzymasz hasła w bazie. Czy są one jakoś szyfrowane?

PS

Nie zapomnij pochwalić się stroną tutaj: http://yiiframework.pl/viewforum.php?f=6

Pomogło. Dzięki sidewinder :)

Nadal się męczę z sortowaniem, ale sądzę że jakoś dam sobie radę.

Jeżeli chodzi o szyfrowanie to są szyfrowane hasła ale tylko te potrzebne do logowania. Inne jeszcze nie są szyfrowane. Wiem że tak nie może zostać i muszę to jakoś zmienić.

Może zainteresuj się tym - http://www.phpaes.com/ Jest to algorytm używany m.in. w KeePass

Znajomy twierdzi, że 256 bitowego AES jest cholernie ciężko złamać.

Tak. AES (Advanced Encryption Standard) jest obecnie najbezpieczniejszym skryptem kryptograficznym ze względu na długość klucza. Jest o wiele bezpieczniejszy od DES i 3DES. Oba algorytmy AES i DES można złamać tylko za pomocą brud force(przeszukanie całego zbioru możliwych kluczy). Nie jest znany inny skuteczny atak kryptoanalizy na te algorytmy. (Miałem kryptografie na 3 roku infy, teraz jestem na 5)

Obecnie tak to rozwiązałem:

  • przy rejestracji nowego użytkownika hasło jest kodowane md5

  • każde hasło dodane w "twoje hasła" jest kodowane algorytmem

  • klucz do kodowania haseł jest hasło użyte do logowania, które jest w zmiennej sesyjnej

  • W bazie danych nie ma żadnego niezakodowanego hasła. Nikt oprócz użytkownika nie może zobaczyć cudzego hasła, NAWET ADMIN

Wykupiłem też 2 domeny http://hasla.info lub http://bazahasel.pl

No i właśnie ten hash md5 jest najsłabszym punktem całego systemu zabezpieczeń. Robisz po prostu md5($zmienna_z_haslem) czy stosujesz jakieś zabiegi (statyczne i dynamiczne ciągi znaków dodawane to hasła) które uniemożliwią odzyskanie hasła z pierwszej lepszej bazy danych hashy md5 ?

Pomysł na aplikację jest ciekawy, ale będziesz się musiał mocno postarać, żeby przekonać ludzi do korzystania z Twojego serwisu zamiast na przykład ze wspomnianego wcześniej KeePass.

md5 jest wykonywane z base64_encode i tak zapisane w bazie danych. Hasła w "twoje hasła" są kodowane mcrypt_encrypt MCRYPT_RIJNDAEL_256 czyli AES. http://pl.php.net/manual/en/ref.mcrypt.php

Jeszcze zwrócę uwagę że hasła w "twoje hasła" są kodowane hasłem podenym podczas logowania (nie używam tego z bazy danych), czyli textem jawnym.

To jest tylko istotne.

Cała reszta nie. Dalsze algorytmy szyfrowania nie mają już znaczenia, bo jeżeli ktoś ukradnie twoją bazę danych to odzyska oryginalne hasła logowania najdalej w parę godzin za pomocą tablic tęczowych a jak ma szczęście to w parę sekund przeszukując bazy danych hashy takie jak na przykład te:

http://gdataonline.com/seekhash.php

http://tools.benramsey.com/md5/

klasyczny atak słownikowy ;)

polecam artykuł na stronie konkurencji (zacznij czytać od "Hash Once and Only Once!" )

http://codeigniter.com/news/P5/

oraz jak zwykle wiki

http://en.wikipedia…cryptography%29

sposób prosty a daje poczucie bezpieczeństwa :)

KeePass ma tę wadę, że jest dostępny tylko offline. Oczywiście można synchronizować bazę danych, jednak nie na każdym komputerze możesz zainstalować soft (np. w szkole).

Alternatywą jest http://www.clipperz.com/, który wygląda naprawdę ciekawie. Posiada nawet coś w rodzaju w widgeta do Firefoxa i Opery.

Sorki że nie pisałem tak długo, ale jeszcze mam 2 inne projekcie na głowe za które mi płacą. Powinno się rozstrzelać człowieka co do informatyka mówi że ma zrobić kilka działających wersji strony tylko po to aby jedna była wybrana.

Hashowanie haseł dodane. Jeszcze chcę dodać obsługę ssl, ale do tego trzeba mieć indywidualne ip (120zł/rok) i wykupić certyfikat (159złrok).

Fajnie też by było znaleźć jakiś prosty i nieskomplikowany szablon, ale niestety nie mam gustu w tych sprawach i zwykle wybieram te layouty które nikomu nie pasują. Chociaż domyślny szablon yii też jest fajny. Jest czysty, nieskomplikowany i ergonomiczny, więc może wkleję jakieś logo to wszystko. W każdym bądź razie jestem otwarty na wszystkie propozycje w tej kwestii.

Zachęcam też do testowania wszystkich opcji serwisu.

Pozdrawiam Zegarmistrz

Serwis już jest w 100% przetestowany i sprawny. Bardzo dziękuję Tru i Sidewinder za wasze rady. Teraz pozostało mi tylko wypozycjonować i zrobić jakąś skromną reklamę.

Pozdrawiam Zegarmistrz.