Autor | Zpráva | ||
---|---|---|---|
stuchlej Profil |
#1 · Zasláno: 21. 4. 2010, 13:47:16
Dobrý den. Chtěl bych se zeptat, zda a jak je bezpečný zápis hesla přímo do skriptu PHP.
Jakou metodu by jste mi doporučily vy? děkuji |
||
WanTo Profil |
#2 · Zasláno: 21. 4. 2010, 13:50:22
Když už, tak minimálně bych ho tam zapsal jako hash. Příklad s MD5:
if (md5($heslo) == "0b2702879fee9aee925f8d6e30fc2ad8")) udelej_neco; |
||
mckay Profil |
#3 · Zasláno: 21. 4. 2010, 13:54:17
stuchlej:
Pokud ke skriptu nemá přístup nikdo jiný (čehož prakticky těžko v realitě dosáhneš), tak by to mělo být jedno, ale protože se php nekompiluje, tak to není moc bezpečné, tedy alespoň jak řekl WanTo, použít otisk hesla. |
||
AM_ Profil |
#4 · Zasláno: 21. 4. 2010, 14:03:45
Ještě bych tam přidal alespoň salt, neosolený hash ne zrovna silného hesla lze rychle nalézt v rainbow tabulce.
if (sha1($heslo.'$@SALT#!') == "<sha1-kód>")) udelej_neco; Salt může být prakticky cokoli - čím šílenější string, tím lepší. Navíc SHA1 je o něco silnější než MD5. |
||
stuchlej Profil |
#5 · Zasláno: 21. 4. 2010, 15:10:49 · Upravil/a: stuchlej
Takže mi v podstatě doporučujete mít jako heslo do mysql otisk hesla pomocí hash?
Tím myslím, že si zadám ve formůláři heslo, pak si z něj udělám otisk a ten otisk použiji jako heslo do MySQL. Můžu si změnit heslo do mysql na tak dlouhy řetězec? |
||
Joker Profil |
#6 · Zasláno: 21. 4. 2010, 15:15:33
stuchlej:
„Tím myslím, že si zadám ve formůláři heslo, pak si z něj udělám otisk a ten otisk použiji jako heslo do MySQL.“ To je na nic, protože to nebude fungovat. Pokud se teda v databázi nenastaví jako heslo přímo ten hash, tj. ve formuláři se zadá třeba "heslo", ale skutečné heslo k databázi by bylo "955db0b81ef1989b4a4dfeae8061a9a6". Tak jako tak ale v připojovacím skriptu se prostě musí použít "čisté" heslo. |
||
AM_ Profil |
#7 · Zasláno: 21. 4. 2010, 15:20:56
No mohl bys to něčím šifrovat, ale musel bys to umět dešifrovat a mít k dispozici všechny klíče, které by pak snadno získal i hacker, takže to vlastně nemá smysl. Když už se ti někdo dostane do PHP kódu, je to dost velká katastrofa; hesla uživatelů v databázi se hashují proto, že když někdo nahackuje web, nezíská tak snadno jejich hesla, která mají často i k jiným službám stejná.
|
||
bohyn Profil |
#8 · Zasláno: 21. 4. 2010, 15:21:55
stuchlej:
Heslo do MySQL ti nezbyde než udělat plaintext třeba přímo do PHP souboru. Musíš se smířit s tím, že když se někdo dostane k PHP, tak bude mít i heslo k MySQL mckay: Ani ve zkompilovaném kódu není heslo v bezpečí. |
||
stuchlej Profil |
#9 · Zasláno: 21. 4. 2010, 16:01:14
Joker:
> To je na nic, protože to nebude fungovat. Pokud se teda v databázi nenastaví jako heslo přímo ten hash, tj. ve formuláři se zadá třeba "heslo", ale skutečné heslo k databázi by bylo "955db0b81ef1989b4a4dfeae8061a9a6". > > Tak jako tak ale v připojovacím skriptu se prostě musí použít "čisté" heslo. To to heslo tam nebudu moci zadat ve formuláři? Když ho tam dám ve formuláři ta přece nebude rozdil mezi tím zda jsem ho zapsal do skriptu nebo zda sem ho zadal do formuláře? |
||
AM_ Profil |
#10 · Zasláno: 21. 4. 2010, 16:02:20
stuchlej:
Ty budeš zadávat heslo do databáze přes formulář? No fuj. Co tě k tomu vede? Pokud teda nepíšeš konkurenci phpMyAdminovi |
||
stuchlej Profil |
#11 · Zasláno: 21. 4. 2010, 16:14:19
Ne ale zkouším si pstát v PHP účetnictví, protže neumím jinný jazyk.
Jinak jak to děláte vy? |
||
Joker Profil |
#12 · Zasláno: 21. 4. 2010, 17:28:31
AM:
„Ty budeš zadávat heslo do databáze přes formulář?“ Tak může jít o nějaký instalační nebo konfigurační formulář. stuchlej: „Jinak jak to děláte vy?“ Prostě heslo do databáze musí být někde uložené v plaintextu. |
||
AM_ Profil |
#13 · Zasláno: 21. 4. 2010, 17:36:08
Joker:
„Tak může jít o nějaký instalační nebo konfigurační formulář.“ to je možné. Nicméně stejně nechápu, v čem je problém. |
||
bohyn Profil |
#14 · Zasláno: 21. 4. 2010, 17:59:12
stuchlej:
Pokud to nemá být klasická webstránka tak IMHO neni špatný nápad zkombinovat přihlašování k databázi s přihlášením do aplikace. Takže třeba sha otisk hesla schovaný v session (a heslo do MySQL ten otisk) by mělo být celkem OK. Dají se tak třeba odlišit různá práva uživatelů. Nejlepši způsob jak někomu povolit read-only přístup je nedát mu zapisovací práva. Pak se nemusíš spoléhat jen na bezpečnost PHP skriptů. |
||
Časová prodleva: 14 let
|
0