Autor Zpráva
Mirek7853
Profil *
Ahoj, potřebuju předat informace mezi stránkami (formulář mi vygeneruje například: ../pokus.php?id=111) Jenomže když kdokoliv změní to čísl id, změní mi i informace v odesílaném mailu. Jak toto mám zašifrovat aby to nešlo změnit?
Moc děkuju za pomoc.
yFang
Profil
Mirek7853:
Proč tedy neodesíláš formulář přes POST?
Případně můžeš id uložit do session nebo cookie...
Mirek7853
Profil *
Jde o to, že to jsou stránky pro bytový projekt, to znamená, že když někdo klikne na rezervaci bytu např. 111, odkáže se na stránku /rezervace.php?id=111, proto se to id pořád mění, ted to mám řešený takto, ale když někdo zmení id, změní se i odesílaný email.
Rellik
Profil
Tak tu 111 vypisuj pomocí base64_encode(). To ti z ní udělá něco takového IHN0cmluZw= a k kódu kde se to zase potřebuje normálně to zase rozkóduješ...
juriad
Profil
Rellik:
base64 není bezpečné; určitě se nedá považovat za šifru

pokud ti správně rozumín, tak ty máš seznam bytů; ke každému je podstránka s id bytu s formulářem; chceš zajistit, aby nikdo nemohl zmanipulovat formulář tak, aby se odeslal s informacemi z jiné stránky?

při vstupu na stránku rezervace?id=xxx do stránky vlož
<input type="hidden" name="id" value="$id">
<input type="hidden" name="timestamp" value="$timestamp">
<input type="hidden" name="identifikator" value="$identifikator">

kde:
$id je id stránky z $_GET["id"] (tedy to xxx)
$timestamp je aktuální čas, kdy byla stánka vygenerovaná <- to je tam proto, aby jsi rozlišil jednotlivé uživatele a znemožnil kradení formulářů
$salt je tvoje tajné heslo, které zajistí, že identifikátor nebude rozlousknutelný
$identifikator = sha1($id.$timestamp.$salt)

při přijetí požadavku od uživatele z formuláře jednoduše poznáš, jestli údaje $_POST["id"], $_POST["timestamp"], $salt dohromady vytvoří $_POST["identifikator"]
pokud ne, došlo k manipulaci s údaji ve formuláři a tedy zpracování formuláře odmítneš

ta $salt je nějaká tvá konstanta, která má zajistit to, aby nikdo neodhadnul způsob, jak se $identifikator vypočítává

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0