Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> logowanie md5
berto
post 30.04.2003, 11:55:44
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.04.2003

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


Witam serdecznie.
Chcialbym sobie napisac forum dyskusyjne i system niusow na stronke ale nie radze sobie z logowaniem. Tzn. umiem zrobic logowanie ale dla jednego uzytkownika a chcialbym zeby bylo wiecej osob. Ponizszy kod dotyczy wlasnie jednej osoby:

// formularz
<code>
<form action=login.php>
<input type=text name=member><br>
<input type=password name=password><br>
<input type=submit name=submit value=Login>
</form>
</code>

// login.php
<?
$haslo = 'b22b963b7413da5cdca393be2d15f102';
if ((md5($password) == $haslo))
{echo "Witaj $member!";}
else {echo "Złe hasło!";}
?>

I teraz jak napisac zeby mi skrypt czytal hasla z pliku, linia po linii i sprawdzal z tym co przyjdzie z formularza? Hasla bylyby w pliku tekstowym w takiej postaci:

// pass.txt
tomek||e1bfd762321e409cee4ac0b6e841963c
monika||8ddeb2027a8c79b3c46510a6dcef9dda
robert||9451810adcc13a25e610332880cc447a

Chodzi mi o to zeby tylko hasla byly szyfrowane.
Bardzo prosze o pomoc bo bez tego logowania ani rusz sad.gif
Go to the top of the page
+Quote Post
DeyV
post 30.04.2003, 12:03:23
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




[php:1:f27e0a31af]<?php

$login = "login";
$hasło = md5($haslo);
### to były dane testowe ###

$tab = file($adres_pliku);

foreach ($tab as $wiersz){
$_tab = explode ('|',$wiersz);
if ($_tab[0] == $login){
if ($_tab[1] == $haslo) echo "zalogowany";
else echo "Błędne hasło";
break;
}
}
unset ($tab, $_tab);

?>[/php:1:f27e0a31af]


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
scanner
post 30.04.2003, 12:04:58
Post #3





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




http://forum.php.pl/regulamin.php/#IV.4.f


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Project
post 30.04.2003, 12:07:26
Post #4





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 2.04.2003
Skąd: Poznań

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


Skoro chcesz pisac forum i inne aplikacje to warto by bylo zaznajomic sie z SQL`em...
takie logowanie rozniez latwo mozna oprzec o baze danych....

przeslane dane najpierw filtrujesz a pozniej sprawdzasz ich prawdziwosc w SQL`u

np.
$aSQL="SELECT login, mdpassword FROM users WHERE login='$login' AND mdpassword='$zakodowanehaslo'";

Jesli jednak bedziesz sie upieral przy plikach to moze to Ci pomoze::

[php:1:d7a4f4d3f7]
$linia= file("plik.txt");
$txt = current($linia);
do
{
// $txt to linia z pliku
}
while($txt= next($linia))
[/php:1:d7a4f4d3f7]
a tak wogole to nie potrafiac zrobic tego nie wroze Ci szybkiego ukonczenia innych aplikacji ;D
Go to the top of the page
+Quote Post
scanner
post 30.04.2003, 12:17:50
Post #5





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




DeyV, pozwolę sobie lekko Twój przykład zmodyfikować:[php:1:bfe5b96ab0]<?php

$login = "login";
$hasło = md5($haslo);
### to były dane testowe ###

$tab = file($adres_pliku);
$zalogowany = FALSE;

foreach ($tab as $wiersz){
$_tab = explode ('|',$wiersz);
if ($_tab[0] == $login){
if ($_tab[1] == $haslo){
echo "zalogowany";
$zalogowany = TRUE;
} else {
echo "Błędne hasło";
}
} else {
echo "podany użytkowniek nie istnieje";
}
}
unset ($tab, $_tab);
if (!$zalogowany) die('Logowanie nie powiodło się.');
?>[/php:1:bfe5b96ab0] To tylko dla porządku - często nie wiadomo czy się wpisało źle hasło, czy użytkownika, czy jedno i drugie.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
berto
post 30.04.2003, 12:21:55
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.04.2003

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


Dziekuje, naprawde nie spodziewalem sie az tak szybkiej odpowiedzi.

DeyV ---> sprobuje tego, choc nie bardzo wiem jak wyciagnac te dane z pliku, czy moglbym prosic troche jasniej. Dopiero zaczynam i jeszcze wielu rzeczy nie wiem.

Scanner ---> wiem, zapomnialem dodac znacznikow, chyba o to ci chodzi,
przepraszam, nastepnym razem nie zapomne

Project ----> niestety nie mam dostepu do SQL'a.
Go to the top of the page
+Quote Post
Project
post 30.04.2003, 12:23:37
Post #7





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 2.04.2003
Skąd: Poznań

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


tak szczerze mowiac chlopaki to w waszym skryptcie nie podoba mi sie przekazywanie nazwy pliku przez parametr !!!
jezeli skrypt bylby napisany w takiej formie jak zaproponiowalicie to daje glowe ze zaloguje sie nie znajac ani loginu ani hasla winksmiley.jpg
Go to the top of the page
+Quote Post
DeyV
post 30.04.2003, 12:23:40
Post #8





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




zobacz Manual->file() i wszystko będzie jasne


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
scanner
post 30.04.2003, 12:31:46
Post #9





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Cytat
w waszym skryptcie nie podoba mi sie przekazywanie nazwy pliku przez parametr !!!
Chyba czegoś nie rozumiem. Przez jaki parametr? Przez zmienną? A co to ma do rzeczy?
Cytat
Jeżeli skrypt bylby napisany w takiej formie jak zaproponiowalicie to daje glowe ze zaloguje sie nie znajac ani loginu ani hasla winksmiley.jpg
Jak?


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Project
post 30.04.2003, 12:37:12
Post #10





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 2.04.2003
Skąd: Poznań

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


http://adres.strony/skrpt.php?adres_pliku=...wer/moj.plk.txt

a co w mim pliku i na moim serwerze to juz chyba nie musze tlumaczyc winksmiley.jpg
to tak najprosciej jak mozna... czesto znajduje sie takie bledy w plikach ktore sa includowane przez inne skrpty winksmiley.jpg
Go to the top of the page
+Quote Post
berto
post 30.04.2003, 12:39:38
Post #11





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.04.2003

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


Jeszcze raz dziekuje, mam nadzieje ze sobie jakos z tym poradze.
Go to the top of the page
+Quote Post
DeyV
post 30.04.2003, 12:47:00
Post #12





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Cytat
DeyV, pozwolę sobie lekko Twój przykład zmodyfikować:
Ależ oczywiście, będzie mi niezmiernie przyjemnie, Towarzyszu Scanner;)

Cytat
czesto znajduje sie takie bledy w plikach ktore sa includowane przez inne skrpty
W którym skrypcie posawiło się includowanie plików podanych przez paramenr?
Czy chodzi ci o file($nazwa_pliku) ? To ty nie wiesz, ze jeśli to miałby być parametr, to byłby pobrany jak na dane od użytkownika przystało przez ($_POST, $_REQUEST) ?
A zresztą spróbuj zaszkodzić podając błędne dane do funckji file aaevil.gif
A zresztą nie na wiele by ci się przydał dosep do pliku z hasłami zakodowanymi przez md5 tongue.gif


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
scanner
post 30.04.2003, 12:50:34
Post #13





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Project: Pod warunkiem, że wiesz, jaką nazwę ma zmienna trzymająca adres pliku. Do tego mam dla Ciebie coś takiego:[php:1:7433215ddd]<?php
define('__adresPliku__', 'sciezka/do/pliku.txt');
$__file = file(__adresPliku__);
?>[/php:1:7433215ddd]
DeyV: azaliż dziękuję Panu za przyzwolenie.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Project
post 30.04.2003, 12:58:51
Post #14





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 2.04.2003
Skąd: Poznań

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


DeyV nie bardzo sie zrozumielismy...
nie potrzebowalbym wtedy juz tego pliku bo skrypt dane wzorcowe pobieralby odemnie z serwera smile.gif
co do tego includowania to wybieglem troche do przodu i staralem sie wyobrazic praktyczne zastosowanie tego (waszego) skryptu. Aby go nie modyfikowac trzeba bylo by zaincludowac go innym skryptem w ktorym bylaby zdefiniowana wartosc zmiennej $adres_pliku

Co do twojej wypowiedzi scanner to faktycznie trzeba znac nazwe zmiennej... i jak zaznaczylem wczesniej dziala gdy w skryptcie nie jest okreslona sciezka do pliku.
Go to the top of the page
+Quote Post
Teodor
post 30.04.2003, 17:03:28
Post #15





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 13.04.2003
Skąd: Poznan

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


Cytat
Co do twojej wypowiedzi scanner to faktycznie trzeba znac nazwe zmiennej... i jak zaznaczylem wczesniej dziala gdy w skryptcie nie jest okreslona sciezka do pliku.


Moze czegos nie rozumiem ale jak, znajac nawet nazwe zmiennej, chcesz ja przekazac w URL do skryptu w ktorym bedzie ona i tak dopiero definiowana ?

a z drugiej strony kto umieszcza plik z haslami w root-katalogu skryptu (gdzie jest dostepny jak zwykly plik)?

Pozdrawiam
Go to the top of the page
+Quote Post
kwiateek
post 1.05.2003, 08:44:06
Post #16





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 13.01.2003
Skąd: 3rd ball of mud behind a big ball of burning gas

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


Cos podobnego bylo juz poruszane:
http://forum.php.pl/viewtopic.php?t=2158&highlight=md5


--------------------
It's Time to Join the PLD Linux Generation!
<? while (!$success) { $try++; } ?>
Go to the top of the page
+Quote Post
Project
post 1.05.2003, 10:03:12
Post #17





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 2.04.2003
Skąd: Poznań

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


Nie nie nie....
ten system mial sie opierac na plikach textowych a nie na sqlu.
Wspominal o tym autor topicu wczesniej.
Watek o ktorym ty wspominasz byl o wykorzystaniu istniejacej juz struktury SQL`a (a dokladniej o strukturze z phpbb)
Go to the top of the page
+Quote Post
Teodor
post 1.05.2003, 11:10:13
Post #18





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 13.04.2003
Skąd: Poznan

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


fakt podany przyklad troche nie pasuje tutaj
Ja kiedys gdy nie mialem dostepu do sql uzywalem tego:
[php:1:f017ba8c64]<?
require("includes/funkcje.php");
include("db/config.php");
$is_loged_in="0";
if(isset($username)) {
if(!isset($md5_password)) {
$md5_password=md5($password);
}
$members_db=file("db/user.txt");
foreach($members_db as $member_db_line){
$member_db=explode("||",$member_db_line);
if($member_db[1]==$username && $member_db[2]==$md5_password) {
$is_loged_in=1;
setcookie("username", $username, time()+21600);
setcookie("md5_password", $md5_password, time()+21600);
break;
}
}
}
$pokaz = new only;
if($is_loged_in==0) {
$pokaz->head(0, "Zaloguj sie");
echo"<form action='secure.php' method='post'>n";
echo"<table width='100%' class='tabela'>";
echo"<tr><td align='right'>Username:</td><td align='left'><input type='text' name='username' ></td></tr>n";
echo"<tr><td align='right'>Password:</td><td align='left'><input type='password' name='password'></td></tr>n";
echo"<tr><td></td><td><input type='submit' value='Login'></td></tr>n";
echo"</table>";
echo"</form>n";
$pokaz->foot(0);
}
elseif($is_loged_in==1) {
switch($action) {
default:

?>[/php:1:f017ba8c64]

I nadal nie widze mozliwosci obejscia tego w taki sposob jak przedstawil Project...
Przyklad: jakisskrypt.php

[php:1:f017ba8c64]<?php
$blabla=123;
echo"$blabla";
?>[/php:1:f017ba8c64]
I teraz wywolujemy
Kod
http://jakasstrona.com/jakisskrypt.php?blabla=321

i co sie wyswietli?

A na koniec wszystko sie sprowadza do tegi iz, niewaznie jak bezpieczny(od strony php) masz system logowania jak i tak znajdzie jakis script-kiddie, ktory forcebrut'em i tak wejdzie bo uzytkownicy przewaznie maja hasla typu "monitor", "myszka" itp smile.gif
Go to the top of the page
+Quote Post
Project
post 4.05.2003, 07:20:50
Post #19





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 2.04.2003
Skąd: Poznań

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


Bo to nie o to tu chodzilo...
jase ze w taki sposob to nie zadziala... ale w przykladzie ktory padl na samym poczatku wcale nie bylo zdefiniowanej zadnej wartosci.. a calosc wygladala jakby miala byc includowana do wiekszej calosci...
czesto zdaza sie ze wywolujac odpowiedni plik z ustawionymi zmiennymi mozna uzyskac nieautoryzowany dostep (np do panelu administracyjnego) !!!
aaevil.gif
Pewnie niejeden z was powie ze to bledy niedoswiadczonych programistow ale prawda jest taka ze moga zdazyc sie kazdemu gdy termin nagli (wtedy czlowiek pracuje jak automat)...
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: 24.07.2025 - 20:17