| 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