diff --git a/app/edit/filedelete.php b/app/edit/filedelete.php index b4a7442cfb..3813087221 100644 --- a/app/edit/filedelete.php +++ b/app/edit/filedelete.php @@ -17,73 +17,94 @@ The Initial Developer of the Original Code is Mark J Crane - Portions created by the Initial Developer are Copyright (C) 2008-2012 + Portions created by the Initial Developer are Copyright (C) 2008-2019 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane James Rose */ -include "root.php"; -require_once "resources/require.php"; -require_once "resources/check_auth.php"; -if (permission_exists('script_editor_save')) { - //access granted -} -else { - echo "access denied"; - exit; -} + +//includes + include "root.php"; + require_once "resources/require.php"; + require_once "resources/check_auth.php"; + +//check permissions + if (permission_exists('script_editor_save')) { + //access granted + } + else { + echo "access denied"; + exit; + } //add multi-lingual support $language = new text; $text = $language->get(); -$folder = $_GET["folder"]; -$folder = str_replace ("\\", "/", $folder); -if (substr($folder, -1) != "/") { $folder = $folder.'/'; } -$file = $_GET["file"]; +//set the variabls + $folder = $_REQUEST["folder"]; + $folder = str_replace ("\\", "/", $folder); + $folder = realpath($folder); + $file = $_REQUEST["file"]; -if (strlen($folder) > 0 && strlen($file) > 0) { - unlink($folder.$file); - header("Location: fileoptions.php"); -} -else { - //display form - require_once "header.php"; - echo "
"; - echo "
"; - echo "
"; - echo ""; - echo " "; - echo " "; - echo " "; - echo " "; - echo " "; - echo " "; - echo "
".$text['label-path']."
".$folder.$file."
"; +//delete the file or show the html form + if (strlen($folder) > 0 && strlen($file) > 0 && isset($_POST['token'])) { + //compare the tokens + $key_name = '/app/edit/file_delete'; + $hash = hash_hmac('sha256', $key_name, $_SESSION['keys'][$key_name]); + if (!hash_equals($hash, $_POST['token'])) { + echo "access denied"; + exit; + } - echo "
"; + //delete the file + unlink($folder.'/'.$file); - echo ""; - echo " "; - echo " "; - echo " "; + //redirect the browser + header("Location: fileoptions.php"); + } + else { + //create the token + $key_name = '/app/edit/file_delete'; + $_SESSION['keys'][$key_name] = bin2hex(random_bytes(32)); + $_SESSION['token'] = hash_hmac('sha256', $key_name, $_SESSION['keys'][$key_name]); - echo " "; - echo " "; - echo " "; + //display form + require_once "header.php"; + echo "
"; + echo "
"; + echo " "; + echo "
".$text['label-file-name']."
"; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
".$text['label-path']."
".$folder."
"; + echo "
"; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; + echo "
".$text['label-file-name']."
"; + echo " "; + echo " "; + echo " "; + echo "
"; + echo "
"; + echo "
"; - echo " "; - echo " "; - echo " "; - echo " "; - echo " "; - echo " "; - echo ""; - echo ""; - echo ""; + //include the footer + require_once "footer.php"; + } - require_once "footer.php"; -} -?> \ No newline at end of file +?>