Nette\String randomString/random
- Patrik Votoček
- Člen | 2221
Hodil by se generator náhodných stringů. (pro hesla, klíče atd.)
něco jako:
class String
{
public static function random($length, $base = "abcdefghjkmnpqrstwxyz123456789")
{
$max = strlen($base)-1;
$string = "";
mt_srand((double)microtime()*1000000);
while (strlen($string) < $length)
$string .= $base[mt_rand(0,$max)];
return $string;
}
}
Editoval vrtak-cz (19. 6. 2009 4:02)
- pmg
- Člen | 372
Asi to nedopadne, protože podobná funkce už byla jednou odstraněna. Můžeš to ale hodit do repozitáře. :-)
- Patrik Votoček
- Člen | 2221
R2D2 napsal(a):
ještě nahradit $key za $string, jinak ten cyklus poběží celkem dlouho :)
Sorry… Opraveno
Každopádně jsem to sem psal protože to je věc která mě hodně ve FW chybí a to protože spousta z nás má aplikace kde je zaslání zapomenutého hesla uživately a jelikož jsme chytří tak ho nemame jako plain text ale hash (MD5, SH1 atd.). A tak nemůžeme zaslat aktuálně nastavené heslo uživatele a proto generujeme nové „náhodné“. A to poté posíláme a nastavujeme. A tak by se hodilo mít tohle rovnou ve FW.
- nAS
- Člen | 277
Mě by se tato funkce také hodila. Teď zrovna potřebuju generovat salt pro ukládání hesel a určitě ji budu potřebovat pro zasílání zapomenutých hesel. Nějak jsem nepochopil, jak pmg řeší zapomenuté heslo? Když je heslo zahashované, tak jej nemůžeš uživateli poslat a tedy je potřeba mu vygenerovat nějaké nové, ne? A ještě by mě zajímalo, proč třída String nedědí od Object? Takhle si tam tu metodu nemůžu dodat ani přes extensionMethod :(
- vlki
- Člen | 218
String je statická třída, tedy jen knihovní třída zastřešující nějaké funkce. Takže si stačí napsat třídu, do které si budeš psát vlastní knihovní funkce. Čistěji už to moc nejde…
Že by pmg posílal ten md5 hash, aby si své heslo uživatel zjistil sám porovnáváním?:)
Editoval vlki (19. 6. 2009 17:20)
- pmg
- Člen | 372
No dobře, byla to narážka na to, že je snadné k MD5 nalézt kolizi. Na druhou stranu se nalezení kolize nemusí rovnat prolomení hesla, které je při určitém designu aplikace tím jediným, co vyžaduje vysokou ochranu.
Dobrá ochrana hesla se dá v praxi realizovat tak, že se hashuje opakovaně, použije se salt, a udělá se to javaskriptem na straně klienta. Vlastní certifikát SSL a chráněný server je určitě lepším řešením, ale všechno to stojí dinero. Existují racionální důvody proč se obávat sdílených hostingů / certifikátů.
Jinak jsem rád, že někdo (konečně) zareagoval na moji signaturu. Je to výborná parafráze! A také vidím, že jsem to napsal blbě… hned to fixnu. Troll fed. :-D
Editoval pmg (19. 6. 2009 22:02)
- nAS
- Člen | 277
vlki napsal(a):
String je statická třída, tedy jen knihovní třída zastřešující nějaké funkce. Takže si stačí napsat třídu, do které si budeš psát vlastní knihovní funkce. Čistěji už to moc nejde…
No jasně, tak jsem to taky vyřešil, jenom mi připadá, že by se to hodilo do třídy String a když už má Nette ty extensionMethod-y, tak je škoda, že zrovna když to poprvé potřebuju, tak to nejde :)
Že by pmg posílal ten md5 hash, aby si své heslo uživatel zjistil sám porovnáváním?:)
… a dostává tisíce děkovných dopisů ;)
pmg napsal(a):
No dobře, byla to narážka na to, že je snadné k MD5 nalézt kolizi. Na druhou stranu se nalezení kolize nemusí rovnat prolomení hesla, které je při určitém designu aplikace tím jediným, co vyžaduje vysokou ochranu.
Přesně tak, kolize tady v tom případě nijak nevadí.
Dobrá ochrana hesla se dá v praxi realizovat tak, že se hashuje opakovaně, použije se salt, a udělá se to javaskriptem na straně klienta. Vlastní certifikát SSL a chráněný server je určitě lepším řešením, ale všechno to stojí dinero. Existují racionální důvody proč se obávat sdílených hostingů / certifikátů.
A třeba právě ten salt je potřeba náhodně generovat.
Jinak jsem rád, že někdo (konečně) zareagoval na moji signaturu. Je to výborná parafráze! A také vidím, že jsem to napsal blbě… hned to fixnu. Troll fed. :-D
Jj, tvůj podpis se mi líbí už dlouho. :)
- romansklenar
- Člen | 655
Myslím, že statické metody nejdou pomocí extension
method do tříd přidávat, proto asi ani String
nedědí z
Object
-u.
- Majkl578
- Moderator | 1364
PetrP napsal(a):
Ví někdo proč se nepřidali i metody jako __getStatic atd?
http://www.google.cz/search?…
první odkaz je zajímavý, včetně patche
- LM
- Člen | 206
Majkl578 napsal(a):
PetrP napsal(a):
Ví někdo proč se nepřidali i metody jako __getStatic atd?http://www.google.cz/search?…
první odkaz je zajímavý, včetně patche
Ten patch stál za houby a nikdo se neměl k tomu ho dotáhnout do konce,
každopádně třeba Environment::$templatesDir
by bylo
pěknější než Environment::getVariable(…)
.
Editoval LM (23. 6. 2009 10:09)