[php] Hasło w pliku??

0

Chodzi o loginy na stronach (np. forum). Prawie zrobiłem szkielecik forum, pobierający dane z xml'a, tylko mam taki problemik:
Niestety poprzez wpisanie www.strona.pl/plik.xml, wyświetla się zawartość pliku! Nie przeszkadzało by to, do normalnych danych typu posty, poniweaż i tak je widać, lecz niewiem jak w takim razie przechowywać hasła i loginy użytkowników! (każdy odgadł by, że jest to np. Accounts.xml, wyświetliłby plik i shackowałby wszystkie konta naraz)

Jak przechowywane są hasła na innych stronach?? Niestety mySql chyba odpada, może jest coś innego (może jakieś szyfrowanie, czy zabezpieczenie pliku??)

Proszęo pomoc!!!

0

czego to ludzie nie wymyślą ...:/

no ale cóż - hashuj hasła po prostu

0

Zapisuj do pliku wyniki szyfrowania MD5 i nie pozwól się logować używając zakodowanego hasła. Tylko hasło prawdziwe wpisane podczas logowania szyfruj, a wynik szyfrowania porównuj z wynikiem szyfrowania znajdującym się na stałe w pliku. Bo MD5 zawsze zwraca to samo.

Składnia:

string md5(string $doszyfrowania);

Przykład logowania:

<?php

// Tu wstawiasz instrukcje pobierające dane z pliku
// Najlepiej, jeśli hasła sa tablicą w których indeksy są nazwami userów a ta tablica zapisywana jest do zmiennej $hasla

$loginform=<<<CODE
Tu dajesz zawartość formularza logowania
Jako login pole o nazwie "login", jako hasło pole o nazwie "pass".
CODE;

if ($hasla[$_POST['login']]==md5($_POST['pass'])) {
 // Instrukcje odpowiedzialne za przyjęcie użytkownika
} else if (($_POST['login']=='') && ($_POST['pass']=='')) {
 echo $loginform;
} else {
 echo "Niepoprawna nazwa użytkownika lub hasło!<br>\n";
 echo $loginform;
}

?>

I powtarzam, w pliku musi być też zaszyfrowane bo inaczej będą farmazony! użycie słowa farmazony - © copyright by Fatalbomb
I jeszcze coś na bis: jeśli masz serverek na systemie Unixowym, to dajesz chmod 600 tajny_plik. Tylko wtedy skrypty wyświetlające zawartość plików to wyświetlą. Czyli jeśli wbudowałeś do swojego forum funkcję widoku źródła skryptu, to odpada.

0

Aha! Dzięki!

0

IMO majac hash moze zrobic brute froce'a i juz sie bedzie mialo haslo.

czy koniecznie musisz korzystac z xml'a? moja propozycja to:

<?php
  $USERS[]['login'] = 'jakislogin';
  $USERS[]['password'] = 'hashPassworda';
?>

jest to skrypt php, wiec nikt nie wyswietli jego zawartocsi.

0
Karolaq napisał(a)
<?php
  $USERS[]['login'] = 'jakislogin';
  $USERS[]['password'] = 'hashPassworda';
?>

To zapisze login w jednym elemencie a haslo w drugim ;) Ale sam pomysl popieram, sam zrobilem podobnie.

0
Karolaq napisał(a)

IMO majac hash moze zrobic brute froce'a i juz sie bedzie mialo haslo.

No jasne. Teraz policz, ile to zajmie Twojemu komputerowi, żeby 128-bitowy szyfr złamać brute forcem. Ale fakt faktem, że MD5 nie jest już uznawany za bezpieczny algorytm hashujący.

0
Adam.Pilorz napisał(a)

Ale fakt faktem, że MD5 nie jest już uznawany za bezpieczny algorytm hashujący.

zależy jak się go użyje - ale jeszcze nie widziałem kogoś kto by nie był gołosłowny co do tego

0

Akurat trochę ciężko mi przytoczyć jakieś bardzo konkretne argumenty z pamięci, ale mój brat prowadził prezentację na temat bezpieczeństwa tego typu algorytmów na III Warsztatach Kryptografii i Ochrony Informacji Koła Naukowego Informatyków KUL. Jak mi się uda od niego wyciągnąć i jak chcesz, to mogę Ci podesłać prezentacjęw PowerPoint, która parę faktów na ten temat przedstawia. Ale to raczej nie w tym momencie, bo nie mam z nim chwilowo bezpośredniego kontaktu (siedzi na roztoczu, a ja Lublinie).

0

ja bym wolał dowód typu choćby strona www gdzie wpisuję hash a ona mi podaje po paru sekundach przykładowy string który ma taki hash - słyszałem że to możliwe [diabel]

0

Nie po paru sekundach...

Co do SHA-1 (bo w podobny sposób znaleziono kolizje w SHA-1 i MD5) i cytując artykuł z Computerworld:

Ataki te umożliwiają zmniejszenie złożoności obliczeniowej znalezienia kolizji w SHA-1 z teoretycznego 280 do 269.

Co oznacza, że masz 1,208335524 * 10^24 mniej możliwości... Niewielka to różnica, i tak potrzeba niezłego kompa aby sprawdzać te wszystkie możliwości (i sporo czasu).

0

haslo ma od 5 do 14 znakow zazwyczaj. trza teraz policzyc ile to kombinacji (litery i cyfry). pomnozyc przec czas generowania hasha i sprawdzenia czy pasuja. raczej to nie jest duzo. ale pamietajmy, to ze np jest to 1000000000 kombinacji to jeszcze nie swiadczy to o tym, ze tak duzo musi sprawdzic. przeciez raczej nikt nie ma hasla "ZZZZZZZZZZZZ" :)

0

Od 5 do 14 znaków? Znaków czyli małych liter, dużych liter i cyfr? To daje od 625 do 6214 kombinacji (od 916132832 do 1,2401769431025 kombinacji). Dobre programy sprawdzają na Athlonie 2400 około 300000 haseł na sekundę. Więc w pierwszym przypadku mamy 3053 sekundy czyli 50 minut - czyli to jest prawdopodobne, a w drugim 1,3108584310</sup>12 lat czyli nieco sporo, prawda? :)

Brute Force nie jest zbyt dobrą metodą... Już lepiej by byo szukać słownikowo, albo po prostu zamiast "łamać hasło" to spróbować "łamać" człowieka ;)

Tych 300000 kombinacji na sekundę nie jestem pewien, możliwe że są szybsze, tak jakoś mi się obijałą ta wartość o uszy :)

0

znaków używanych chyba najczęściej w polsce w haśle jest 88:

aąbcćdeęfghijklłmnńoópqrsśtuvwxyzźżAĄBCĆDEĘFGHIJKLŁMNŃOÓPQRSŚTUVWXYZŹŻ0123456789 -_+!#@$

a założę się że ktoś ma hasło w stylu ZZZZZZZ - zaryzykowałbyś na marne sprawdzania tylu kombinacji z ominięciem takich dlatego że to mało prawdopodobne ?

a fajnie złamałem kiedyś hasło kolegi na maila - spytałem się wprost jakie ma hasło, on na to: "po co ci" a ja mu powiedziałem że chciałem mu wysłać maila ale spytało mnie o hasło a on mi podał :D

0

[glowa] [glowa] [glowa]

Nie lepiej bylo raz mu napisac "skorzystaj z crypt(), bo md5 nie zostalo stworzone do szyfrowania hasel" ? Albo sobie w ogole dac na luz, bo dobrze wiadomo, ze nikt mu nie bedzie BF'em tego hasla rozkodowywal...</b>

0

Na Brutala jest prosty sposób - godzinny ban po 5 krotnym błędnym haśle na dany login - to 'nieco' wydłuży czas ataku [diabel]

0

Nie no to takie tylko glupie spekulacje. mysle, ze samo zapisanie hasla i loginu w pliku php wystarczy. nie ma sensu sie meczyc jakims MD5 czy czyms innym. no ale jak juz cos mowimy to:

Marooned napisał(a)

Na Brutala jest prosty sposób - godzinny ban po 5 krotnym błędnym haśle na dany login - to 'nieco' wydłuży czas ataku [diabel]
jak masz hasha wyciagnietego z pliku xml, to robisz wlasny program i ci moga skoczyc:p, no ale jak juz ktos powiedzial, czas... nikt nie ma na to czasu ;)

0
Karolaq napisał(a)

Nie no to takie tylko glupie spekulacje. mysle, ze samo zapisanie hasla i loginu w pliku php wystarczy. nie ma sensu sie meczyc jakims MD5 czy czyms innym.

nigdy tak nie rób! wiesz co by było gdyby PHP przypadkiem przestało działać ne serwerze i plik PHP dotarł by do odbiorcy bez przeparsowania? tak, zobaczył by hasło... zawsze należy hashować, nawet jeżeli udowodnimy, że na to potrzeba kilkunastu godzin...

0
Adam.Pilorz napisał(a)

Akurat trochę ciężko mi przytoczyć jakieś bardzo konkretne argumenty z pamięci, ale mój brat prowadził prezentację na temat bezpieczeństwa tego typu algorytmów na III Warsztatach Kryptografii i Ochrony Informacji Koła Naukowego Informatyków KUL. Jak mi się uda od niego wyciągnąć i jak chcesz, to mogę Ci podesłać prezentacjęw PowerPoint, która parę faktów na ten temat przedstawia. Ale to raczej nie w tym momencie, bo nie mam z nim chwilowo bezpośredniego kontaktu (siedzi na roztoczu, a ja Lublinie).

Czy mozna proscic o wyslanie na mail, albo umieszczenie tej prezentacji gdzies w necie ? Prosze :>

[email protected]

0
Ktos napisał(a)

nigdy tak nie rób! wiesz co by było gdyby PHP przypadkiem przestało działać ne serwerze i plik PHP dotarł by do odbiorcy bez przeparsowania? tak, zobaczył by hasło... zawsze należy hashować, nawet jeżeli udowodnimy, że na to potrzeba kilkunastu godzin...

no coś ty, serwer musiałby być w posiadaniu zarąbiście głupiego admina, jakby nawalił serwer PHP to Apache czy coś tam nie wyśle do klienta nic oprócz błędu 500 - admin serva musiał by to zrobić specjalnie albo być super debilem żeby wyłączyć PHP. Przecież w tysiącach serwisów hasło do bazy danych jest właśnie tak umieszczane.
Zrobienie pliku:

<?php $user='user1'; $haslo='tajne hasło !!!'; ?>

jest bezpieczniejsze niż:

user1*b1d44a62b55cefc81157991dad000d95

0
Adamo napisał(a)

no coś ty, serwer musiałby być w posiadaniu zarąbiście głupiego admina, jakby nawalił serwer PHP to Apache czy coś tam nie wyśle do klienta nic oprócz błędu 500 - admin serva musiał by to zrobić specjalnie albo być super debilem żeby wyłączyć PHP.
OT: hyhy, na esolution raz coś padło i było widać kod php Coyote [green]

1 użytkowników online, w tym zalogowanych: 0, gości: 1