Autor Zpráva
Steeta
Profil *
Ahoj, už mi to nějak nemyslí.
Jak vložit funkci hash('sha256', db_sloupec) do sql dotazu?
třeba na příkladu:

mysql_query("SELECT id, prava, CONCAT('".trim($_POST['pass'])."',salt) AS db_pass FROM v_user WHERE user='".mysql_real_escape_string(trim($_POST['nick']))."' AND pass = '".hash('sha256', db_pass)."' ") or die(mysql_error());


nějak to tam nemůžu spárovat, aby to šlapalo jak má. to spojení CONCAT funguje správně, ale už to nedokážu zahashovat. a nechce se mi dělat zbytečně SQL dotaz navíc pro zjištění soli.

předem dík za pomoc
Alphard
Profil
db_pass je konstanta?
Steeta
Profil *
Alphard:
nn. tím jsem chtěl docílit toho, že budu mít sloučenou sůl s POSTem z formuláře a to potom použíju k zahashování :) asi špatná cesta :D
Alphard
Profil
Teď to vidím, ale vámi použitý hash() je php funkce. Nejdříve se provede vše na straně PHP a až pak se pospojovaný řetězec předá databázi, tohle nemůže fungovat.
Nox
Profil
Alphard (a Steeta)
Není, dbpass je (dá-li se to tak nazvat) alias pro výsledek té konkatenace, tady se posílá hodnota z DB do PHP který ten dotaz pošle, čímž tu máme krásnou časovou anomálii :-)

Pokud máš sůl uloženou speciálně a nejde ji nijak odvodit, tak se bude muset ten query udělat... jinak prostě v php

hash($nazev_algoritmu, salt_password($password, $dalsi_prvky_receptu))
function salt_password(...){ return /* magie */ }

zkrášlování proměnných by mohlo být mimo dotaz, bylo by to asi přehlednější
+ http://www.phpfreaks.com/blog/or-die-must-die
Steeta
Profil *
dobře, šel jsem na to asi špatně. Jsem si vědom toho, že hash() je php funkce. Bohužel jsem nenašel alternativu pro mysql funkci, proto jsem doh SQL dotazu cpal tu php funkci. Ale doufam, že bude. Existuje tedy alternativa pro sha256?
nightfish
Profil
Steeta:
Existuje tedy alternativa pro sha256?
sha2 bylo přidáno do vývojové větve ve verzi 6.0.5 - tím byly ukončeny 2 tickety z bugzilly, které o přidání této vlastnosti usilovaly
nicméně v průběhu tohoto roku, jak jsem pochopil, byl vývoj řady 6.0 ukončen, teď byla vydána verze 5.5, ve které to ale implementováno není...
řešením je zřejmě vyplnit feature request na bugzille a v mezidobí možná použít patch, který podporu přidává (pokud máte vlastní server)
Kajman_
Profil *
Sloupec v_user není jedinečný? Pak by přeci stačil jeden select, co vrátí práva, sůl a výsledný hash. Kontrola se už udělá v php.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: