Autor | Zpráva | ||
---|---|---|---|
rybarada Profil |
#1 · Zasláno: 12. 8. 2015, 18:04:49
Zdravím, mám problém, udělal jsem editaci jednoho souboru, zahesloval jsem ji, jakmile dám editovaný soubor uložit, opět se zahesluje a nic se neuloží. Nevím, jak to popsat, tak přikládám kód a heslo je nejakeheslo. Poradíte mi? :)
admin/index.php: <?php $heslo = "nejakeheslo"; $form = <<< DATA <form action="#" method="post"> <fieldset> <label>Heslo:</label> <input type="password" name="heslo" /> <input type="submit" name="vstup" value="Vstoupit" /><br /> </fieldset> </form> DATA; if(isset($_POST['vstup'])) { if(strtolower($_POST['heslo']) == strtolower($heslo)) { $over = TRUE; include("./pass/data.php"); } else { echo "Nesprávné heslo!".$form; } } else { echo $form; } ?> admin/pass/data.php: <?php if($over) { ?> <?php if(isset($_POST['send'])) { file_put_contents($_POST['file'], $_POST['text']); } $file = (isset($_POST['file'])) ? $_POST['file']:'hodiny.php'; file_exists($file) ? '':file_put_contents($file,''); ?> <html> <meta charset="utf-8"> <form action="" method="post"> <input type="hidden" name="file" value="<?= $file; ?>"><br> <textarea name="text" cols="150" rows="25"><?php echo htmlspecialchars(file_get_contents($file)); ?></textarea> <input type="submit" name="send" value="Uložit"> </form> <iframe style="height:400px;width:100%" src="<?= $file; ?>"></iframe> </html> <?php ; } else { echo "Neopravneny pristup!"; } ?> |
||
Alphard Profil |
#2 · Zasláno: 12. 8. 2015, 20:34:10
Nejlepší řešení by bylo vytvořit přihlašování pomocí session (to je standardní způsob).
Jestli to chcete zjednodušit bez session, je třeba nějak vyřešit ten problém, že po odeslání formuláře již není v POST původní heslo. Vidím 3 možnosti: 1. heslo zadat znovu i do druhého formuláře - nejbezpečnější 2. heslo si uložit do hidden inputu - není dobrý nápad ukládat hesla a posílat je zpět klientovi 3. po odeslání druhého formuláře již heslo nekontrolovat - také potenciální díra, útočníkovi stačí zjistit správnou adresu a může dělat cokoliv*. *tím že umožňujete ukládat libovolný obsah do libovolného souboru dáváte člověku s přístupem k tomuto adminu možnost provádět cokoliv, co je v silách PHP. Doporučuji buď session, nebo metodu 1. Ty zbylé dvě jsem uvedl jen pro úplnost, nelze je doporučit. |
||
rybarada Profil |
#3 · Zasláno: 12. 8. 2015, 20:51:44
Alphard:
Děkuju za odpověď, jsem pro metodu 1), ale nějak se mi nedáří ji vyřešit, pomůžete mi prosím? :) |
||
Alphard Profil |
#4 · Zasláno: 12. 8. 2015, 21:51:37
Do toho druhého formuláře přidejte
<label>Heslo:</label> <input type="password" name="heslo" /> $_POST['vstup'] kontrolujte přímo $_POST['heslo'] .
|
||
rybarada Profil |
#5 · Zasláno: 12. 8. 2015, 22:09:08
Díky moc :)
|
||
Časová prodleva: 10 let
|
0