upload no .php subor

Programovacie jazyky, rady, poradňa...
Gepid
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1006
Registrovaný: 15 júl 2008, 16:54
Bydlisko: Trnava
Kontaktovať používateľa:

Re: upload no .php subor

Príspevok od používateľa Gepid »

Že ty si si nečítal tú stránku ktorú som ti sem dal?
Trochu to uprav a máš to.

Kód: Vybrať všetko

<?php
$blacklist = array(".php", ".phtml", ".php3", ".php4");
foreach ($blacklist as $item) {
  if(preg_match("/$item\$/i", $_FILES['userfile']['name'])) {
    echo "We do not allow uploading PHP files\n";
    exit;
  }
}
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  echo "File is valid, and was successfully uploaded.\n";
}
else {
  echo "File uploading failed.\n";
}
?>
Je to z toho odkazu čo som ti dal.
eror
Medium Star
Medium Star
Príspevky: 457
Registrovaný: 16 nov 2008, 14:19
Bydlisko: GA

Re: upload no .php subor

Príspevok od používateľa eror »

spravil som to takto a aj tak to nejde

Kód: Vybrať všetko

function UploadFiles($path)
	{
		$returnage = "";

		if($_SERVER['REQUEST_METHOD'] == 'POST')
		{
			if (isset($_FILES['file']) == false OR $_FILES['file']['error'] == UPLOAD_ERR_NO_FILE)
			{
				MiscCore::ErrorFunc('No files');
			}

                        $blacklist = array(".php", ".phtml", ".php3", ".php4");
                        foreach ($blacklist as $item) {
                        if(preg_match("/$item\$/i", $_FILES['file']['name'])) {
                        echo "We do not allow uploading PHP files\n";
                        exit;
                        }
                        }

			if ($_FILES['file']['error'] != UPLOAD_ERR_OK || !FileManagerCore::CheckExtBlackList($_FILES['file']['name']))
			{
				$_SESSION['file_error'] = true;
				MiscCore::ErrorFunc('There has been an error with the upload. This might be caused by the file being too big for example.', true);
			}

                         
                        
			$newfile = $path.'/'.$_FILES['file']['name'];
			move_uploaded_file($_FILES['file']['tmp_name'], $newfile);

			MiscCore::SuccessFunc('You have successfully uploaded your file. <br />Click <a href="?mode=files&dir='.$_GET['redir'].'">here</a> to go back.<br />');
		}
		else
		{
			$returnage .= '<form action="" method="POST" enctype="multipart/form-data">';
			$returnage .= '<input type="file" name="file" size="30">';
			$returnage .= '<input type="submit" class="button" value="Nahrat" />';
			$returnage .= '</form>';
			return $returnage;
		}
	}
//autoeditácia príspevku (25 Feb 2010, 20:43)
mno čo viete kde je chyba?

//autoeditácia príspevku (26 Feb 2010, 15:10)
prosím vás

//autoeditácia príspevku (26 Feb 2010, 17:24)
to akoze mi nikdo nepomoze prosim! :cry:

//autoeditácia príspevku (26 Feb 2010, 21:26)
našiel by sa niekdo taký čo mi pomoze Ďakujem!
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: upload no .php subor

Príspevok od používateľa chrono »

Veď sa pozri na tú funkciu CheckExtBlackList (podľa nej urob funkciu napr s názvom CheckExtWhiteList a urob tam ten test naopak).
eror
Medium Star
Medium Star
Príspevky: 457
Registrovaný: 16 nov 2008, 14:19
Bydlisko: GA

Re: upload no .php subor

Príspevok od používateľa eror »

ale neviem ako, ako vám to mám povedať 8)
I do not know how
Ich weiß nicht, wie
ฉัน ไม่ ทราบ ว่า
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: upload no .php subor

Príspevok od používateľa chrono »

Ty máš pocit, že ľudia, čo sem chodia, majú veštecké gule a takým spôsobom dokážu zistiť, čo vlastne v tom tvojom skripte je?
eror
Medium Star
Medium Star
Príspevky: 457
Registrovaný: 16 nov 2008, 14:19
Bydlisko: GA

Re: upload no .php subor

Príspevok od používateľa eror »

však som ti sem poslal celý script

Kód: Vybrať všetko

function UploadFiles($path)
   {
      $returnage = "";

      if($_SERVER['REQUEST_METHOD'] == 'POST')
      {
         if (isset($_FILES['file']) == false OR $_FILES['file']['error'] == UPLOAD_ERR_NO_FILE)
         {
            MiscCore::ErrorFunc('No files');
         }

                        $blacklist = array(".php", ".phtml", ".php3", ".php4");
                        foreach ($blacklist as $item) {
                        if(preg_match("/$item\$/i", $_FILES['file']['name'])) {
                        echo "We do not allow uploading PHP files\n";
                        exit;
                        }
                        }

         if ($_FILES['file']['error'] != UPLOAD_ERR_OK || !FileManagerCore::CheckExtBlackList($_FILES['file']['name']))
         {
            $_SESSION['file_error'] = true;
            MiscCore::ErrorFunc('There has been an error with the upload. This might be caused by the file being too big for example.', true);
         }

                         
                       
         $newfile = $path.'/'.$_FILES['file']['name'];
         move_uploaded_file($_FILES['file']['tmp_name'], $newfile);

         MiscCore::SuccessFunc('You have successfully uploaded your file. <br />Click <a href="?mode=files&dir='.$_GET['redir'].'">here</a> to go back.<br />');
      }
      else
      {
         $returnage .= '<form action="" method="POST" enctype="multipart/form-data">';
         $returnage .= '<input type="file" name="file" size="30">';
         $returnage .= '<input type="submit" class="button" value="Nahrat" />';
         $returnage .= '</form>';
         return $returnage;
      }
   }
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: upload no .php subor

Príspevok od používateľa chrono »

Neposlal. Z toho tvojho skriptu si poslal len jednu funkciu. Okrem iného tam máš aj triedu FileManagerCore a v nej funkciu CheckExtBlackList.
eror
Medium Star
Medium Star
Príspevky: 457
Registrovaný: 16 nov 2008, 14:19
Bydlisko: GA

Re: upload no .php subor

Príspevok od používateľa eror »

a čo ti mám akože teraz poslaŤ?

//autoeditácia príspevku (27 Feb 2010, 17:04)
a čo ti mám akože teraz poslaŤ?
Lukas1169
Medium Star
Medium Star
Príspevky: 347
Registrovaný: 15 nov 2008, 15:20

Re: upload no .php subor

Príspevok od používateľa Lukas1169 »

lol ešte si sa nedockal odpovedi:)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: upload no .php subor

Príspevok od používateľa audiotrack »

eror napísal:a čo ti mám akože teraz poslaŤ?

//autoeditácia príspevku (27 Feb 2010, 17:04)
a čo ti mám akože teraz poslaŤ?
chrono napísal:Neposlal. Z toho tvojho skriptu si poslal len jednu funkciu. Okrem iného tam máš aj triedu FileManagerCore a v nej funkciu CheckExtBlackList.
Lukas1169
Medium Star
Medium Star
Príspevky: 347
Registrovaný: 15 nov 2008, 15:20

Re: upload no .php subor

Príspevok od používateľa Lukas1169 »

toto som tam našiel

Kód: Vybrať všetko

class FileManagerCore
{
	function RemoveFolder($dir, $DeleteMe = true)
	{
		if(!$dh = @opendir($dir)) return;
		while(false !== ($obj = readdir($dh)))
		{
			if($obj == '.' || $obj == '..') continue;
			if(!@unlink($dir.'/'.$obj)) FileManagerCore::RemoveFolder($dir.'/'.$obj, true);
		}
		
		closedir($dh);
		if ($DeleteMe)
		{
			@rmdir($dir);
		}
		
		MiscCore::SuccessFunc('Zlozka bola uspesne vymazana!<br />Klikni <a href="?mode=files&dir='.$_GET['redir'].'">sem</a> pre vratenie do zlosky.<br />');
	}
toto

Kód: Vybrať všetko

if(!FileManagerCore::CheckBlackList($dir[0]) || !FileManagerCore::CheckBlackList($dir[1]))
		{
			MiscCore::ErrorFunc("You are unable to edit this file.");
		}
toto

Kód: Vybrať všetko

if(!FileManagerCore::CheckExtBlackList($filepath))
		{
			MiscCore::ErrorFunc("Sorry, but the file that you are looking for doesn't exist. Have a nice day!", true);
		}

Kód: Vybrať všetko

if(!FileManagerCore::CheckBlackList($blocked)) MiscCore::ErrorFunc("Access to this area is denied!", true);
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: upload no .php subor

Príspevok od používateľa chrono »

Nič si nenašiel. :P

Tá funkcia vyzerá takto:

Kód: Vybrať všetko

	function CheckExtBlackList($file)
	{
		if (EXTBLACKLIST != "")
		{
			$blacklist = explode(" ", EXTBLACKLIST);

			foreach ($blacklist as $black) 
			{
				if(preg_match("/$black\$/i", $file)) 
				{
					return false;
				}
			}
			return true;
		}
		else return true;
	}
(to je funkcia, ktorá kontroluje, či je prípona zakázaná)

Funkcia, ktorá kontroluje, či je prípona povolená by mohla vyzerať takto:

Kód: Vybrať všetko

	function CheckExtWhiteList($file)
	{
		if (defined("EXTWHITELIST") && EXTWHITELIST != "")
		{
			$blacklist = explode(" ", EXTWHITELIST);

			foreach ($blacklist as $black) 
			{
				if(preg_match("/$black\$/i", $file)) 
				{
					return true;
				}
			}
			return false;
		}
		else return true;
	}
Podmienka

Kód: Vybrať všetko

if ($_FILES['file']['error'] != UPLOAD_ERR_OK || !FileManagerCore::CheckExtBlackList($_FILES['file']['name']))
sa potom zmení na

Kód: Vybrať všetko

if ($_FILES['file']['error'] != UPLOAD_ERR_OK || !FileManagerCore::CheckExtBlackList($_FILES['file']['name']) || !FileManagerCore::CheckExtWhiteList($_FILES['file']['name']))
a niekde na začiatok súboru sa dá

Kód: Vybrať všetko

define("EXTWHITELIST", "txt");
(a možno sa to bude musieť upraviť, keďže som to netestoval a netuším, či tam nie je chyba)
Napísať odpoveď