Portál AbcLinuxu, 25. dubna 2024 23:33


Dotaz: LDAP v php

29.2.2012 20:09 kača
LDAP v php
Přečteno: 201×
Odpovědět | Admin
Příloha:
Zdravím, potřebovala bych pomoc se zaheslováním stránek pomocí ldap. O něco jsem se pokoušela, ale není to dobře. Jsem začátečník a velmi bych ocenila něči pomoc. Zde je co mám vytvořené: http://leteckaposta.cz/219486351 Budu ráda, když se mi někdo na to podíváte.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jendа avatar 29.2.2012 20:20 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: LDAP v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
$what = $_GET["what"];
$vyber = mysql_query("SELECT * FROM ".$tabulka." WHERE ID = ".$what);
Pozor, SQL Injection.
else {$heslo = $_GET["heslo"];}
$filtr = "(&(cn=*$login*)(sn=*$heslo*))";
Tady nevím, jestli nemůže dojít k něčemu podobnému („LDAP Injection“ :).
$heslo = $_GET["heslo"];
(…)
echo (…) $heslo
Tady ti někdo může do té stránky vypsat libovolný kód, protože neescapuješ HTML tagy.
$filtr = "(&(cn=*$login*)(sn=*$heslo*))";
Do sn se normálně dává příjmení, navíc heslo bývá hashované.

Nevím, jak se dělá autentizace proti LDAPu, každopádně bych si nejdřív zkusil rozběhnout nějaký minimální kód, který se jenom na něco zeptá LDAPu, a pokud by nefungoval, přišel bych až s ním. Takhle dlouhý kód ti tady nikdo ladit nebude.

Apropo, proč to má být v PHP? Třeba by šel ten webserver přesvědčit k tomu, aby dělal proti LDAPu normální HTTP autentizaci.
Já to s tou denacifikací Slovenska myslel vážně.
1.3.2012 01:29 dfdfdsg
Rozbalit Rozbalit vše Re: LDAP v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokial viem, vacsina HTTP serverov podporuje autentifikaciu voci LDAP-u "nativne". Napr. lighttpd: http://www.rootninja.com/ldap-lighttpd-easy-setup/ .

Riesenie autentifikacie A:

Co sa tyka riesenia samotnej autentifikacie voci LDAPu, ak sa dobre pamatam, robi sa to tak, ze sa pokusis bindnut k serveru cez binddn a heslo (userPassword).

Riesenie autentifikacie B:

Pokial mas specificky binddn urceny na citanie hesiel inych objektov, mal by byt schopny citat userPassword attribute. Urobis si filter "(&(objectclass=posixAccount)(uid=$login))" a nechas si navratit atribut "userPassword".

Napr. cez command line by to vyzeralo nasledovne: ldapsearch -h server -D "cn=tvojbinddn,dc=local" -w heslo -s sub -b "ou=people,dc=local" "(&(objectclass=posixAccount)(uid=nejakyuzivatel))" userPassword

$heslo zadane uzivatelom prehodis do hash-u (MD5 alebo co pouzivas) a base64 a mozes porovnat (asi?) takto if (userPassword == base64(md5($heslo))).

Tiez by si mohla napisat, co za strukturu v tom LDAPe vlastne mas. V priklade vyssie predpokladam, ze objekty maju class posixAccount.
1.3.2012 07:29 narg
Rozbalit Rozbalit vše Re: LDAP v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
Na autentifikaci bych pouzil funkci ldap_bind (druhy parameter je cestka k zaznamu, treti heslo). LDAP se postara o to, ze zkontroluje heslo podle nastaveneho sifrovaciho algoritmu. Dale na modifikaci hesla se musi pouzit ldap_mod_replace, nikoli heslo smazat a pak pridat. Bych vam to poupravil ale nemam nainstalovany LDAP ;-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.