Upload-Ordner schützen

#0
27.03.2004, 16:32
...neu hier

Beiträge: 4
#1 Guten Tag allerseits,

mein erster Thread. Ich hoffe es kann mir geholfen werden.

Folgendes Problem habe ich nämlich:

Auf einer Webseite (zB. www.name.net) sollen eine reihe von Projekten (zB. www.name.net/Projekt1/, www.name.net/Projekt2/ etc.) von verschiedenen Personen verwaltet werden.
Nun würde ich den Projekt-Ordnern gerne Passwörter zuweisen, dass der jeweils Projekt-Verantwortliche nur in seinen Ordner uploaden kann.

War das verständlich? Nur der Uploader soll das Passwort eingeben müssen, nicht der Besucher.
Seitenanfang Seitenende
27.03.2004, 19:00
Member
Avatar Laserpointa

Beiträge: 2176
#2 Projekte? - hört sich interessant an ;) *neugierig*

1.) FTP Möglichkeit
also falls du für jeden User einen FTP Zugang individuell für Ordner festlegen möchtest muss Dein Hoster das unterstützen...

2.) Website Möglichkeit
unterstützt Dein Hoster PHP? - dann kannst du in jedem Ordner eine admin.php reinsetzen wo Du dann Optionen wie PHP Upload + Passwort Schutz einbaust! ( Scripte gibts dafür mehrere im Internet, falls du das nicht selbst mit PHP schreiben kannst!)

3.) Ordner generell kannst du mit der htaccess schützen (das gilt dann allerdings für alle die den Ordner aufrufen also auch für Gäste!)

Greetz Lp
Dieser Beitrag wurde am 27.03.2004 um 19:02 Uhr von Laserpointa editiert.
Seitenanfang Seitenende
27.03.2004, 19:23
...neu hier

Themenstarter

Beiträge: 4
#3

Zitat

Laserpointa postete
Projekte? - hört sich interessant an ;) *neugierig*

1.) FTP Möglichkeit
also falls du für jeden User einen FTP Zugang individuell für Ordner festlegen möchtest muss Dein Hoster das unterstützen...

2.) Website Möglichkeit
unterstützt Dein Hoster PHP? - dann kannst du in jedem Ordner eine admin.php reinsetzen wo Du dann Optionen wie PHP Upload + Passwort Schutz einbaust! ( Scripte gibts dafür mehrere im Internet, falls du das nicht selbst mit PHP schreiben kannst!)

3.) Ordner generell kannst du mit der htaccess schützen (das gilt dann allerdings für alle die den Ordner aufrufen also auch für Gäste!)

Greetz Lp
Vielen Dank. Mein Hoster unterstützt PHP. Falls jemand eine Link zu einem solchen Script hat, wäre ich dankbar (denn ich habe von PHP keine Ahnung). Ansonsten werde ich mich selbst in die Weiten des Netzes begeben.
Seitenanfang Seitenende
27.03.2004, 20:13
Member
Avatar Xeper

Beiträge: 5291
#4 @Nickvp

Ich würde dir eher raten die servernahe .htaccess Lösung zu verwenden die auch sicherer ist - ist gibt websites mit php scripts etc. etc. aber evntl. werden die dir nicht ausreichen vielleicht bräuchtest du auch eine Datenbank wie mySQL so das php dann darüber die ganzen user herholt etc. Sowas würde ich selber schreiben aber wenn du es nicht kannst findest du evntl. nicht so eine spezifizierte Lösung und einfach passwds und user in eine datei zu knallen ist keine vernünftige Lösung. Und so wie ich das hier sehe geht es ja um mehrere User mit unterschiedlichen Passwörtern.

Habe hier dies: http://xeper.bounceme.net/files/phps/upload.phps

Das ist ein upload script womit man dateien in einen bestimmten ordner uploaden kann, dateien löschen kann und auch dateien umbenennen kann aber halt nur für einen Ordner - naja könntest dann so was ähnliches in jeden Ordner packen - oder halt ein script schreiben was global alle ordner managed.
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
27.03.2004, 20:30
Member
Avatar Laserpointa

Beiträge: 2176
#5 @Xeper,
schönes Script, darf ich das hier posten, damit ich es wenn ich es brauche auch wieder finde ;) - (sonst bescheid sagen (PM))

Greetz Lp

PHP Code


<?php
// code written by Xeper (xeper@quantentunnel.de)

/* This code is released under the terms of the GPL
   as published by the Free Software Foundation 
   
   This is my advanced upload script with functions to -
   delete, rename, or upload a file into a special directory.
   The password authentification uses a md5 sum you can create your
   own md5 sum by using 'md5sum' on GNU/Linux, 'md5' on NetBSD or
   just use the md5() function in PHP - look into the manual for
   more informations. Also you have to change the username var.
   The $filepath variable is global and specifies
   the destination directory. The script self is controlled by a
   variable called $action, look at the switch(). You've to specify a
   user in the ren_file() and del_file() function - look at this both.
   Variables needed for functions:
   
   ren_file(); and del_file(); needs $passwd1 and $user
   del_file(); needes $user and optional $file - notice that all files in the
    directory will be deleted if you didnt specify a $file.
   ren_file(); needs $old and $new - oldfile name and newfile name for rename.
   upload(); needs $upfile. */

global $filepath,$md5;
$GLOBALS['filepath']='files/upload';    // change upload root
$GLOBALS['username']='!place your user name here!';        // user name
$GLOBALS['md5']='!place your md5sum here!';            // md5sum for admin auth

switch($_REQUEST['action']) {
case 
ren_fileren_file(); break;
case 
del_filedel_file(); break;
case 
uploadupload(); break; }

function 
ren_file() {
$passwd2=md5($_REQUEST['passwd1']);
if(
$_REQUEST['user'] == $GLOBALS['username'] &amp$passwd2 == $GLOBALS['md5'])
{
  if(
rename($GLOBALS['filepath'].'/'.$_REQUEST['old'], $GLOBALS['filepath'].'/'.$_REQUEST['new']))
  { echo 
'rename successfull'; }else{
    echo 
'rename failed!'; } 
  }else{ echo 
'wrong user or password.'; }
}

function 
del_file() {
$passwd2=md5($_REQUEST['passwd1']);
$dir=opendir($GLOBALS['filepath']);
if(
$_REQUEST['user'] == $GLOBALS['username'] &amp$passwd2 == $GLOBALS['md5'])
{
if(
$_REQUEST['file'] == '') {
  while(
false !== ($file readdir($dir))) {
    if(
$file != "." &amp;&amp$file != "..") {
     
unlink($GLOBALS['filepath'].'/'.$file);}}
  }else{
  
readdir($dir);
       if(
unlink($GLOBALS['filepath'].'/'.$_REQUEST['file'])) {
        echo 
'file deleted.';
       }else{ echo 
'unlink failed!';}}
}else{
echo 
'wrong user or password.'; }
}

function 
upload() {
if (!empty(
$_FILES['upfile']) &amp;&ampis_uploaded_file($_FILES['upfile']['tmp_name']))
{
     
$des_file strtolower($GLOBALS['filepath'].'/'.$_FILES['upfile']['name']);
     if (!
file_exists($des_file))
     {
      if (
move_uploaded_file($_FILES['upfile']['tmp_name'], $des_file))
      {
       echo 
"<MARQUEE>file successfully uploaded :)</MARQUEE>";
      } else {
       echo 
"<MARQUEE>file upload was not successfull :(</MARQUEE>";
      }
     } else {
      echo 
"<MARQUEE>file exists already :/</MARQUEE>";
     }
} else {
  echo 
"Please enter a file.";
}
}

if (
$dh opendir($filepath.'/')) {
   while(
$file readdir($dh)) {
       if(!
ereg("^\.+$"$file)) {
           
$files[] = $file;
       }
   }
   
closedir($dh);
}

echo 
'<TABLE border="0" cellpadding="2" cellspacing="0" width="100%">';
echo 
'<TR bgcolor="#0000FF">';
echo 
'<TH>file</TH>';
echo 
'<TH>size</TH>';
echo 
'<TH>date</TH>';
if(
is_array($files)) {
natcasesort($files);
reset($files);
foreach (
$files as $idx=>$file)
{
    echo 
'<TR bgcolor="#000000">';
    echo 
'<TD><A href="'.$filepath.'/'.$file.'" target="_blank">'.$file.'</A></TD>';
    echo 
'<TD align="right">'.number_format(filesize($filepath.'/'.$file),0","".").' Bytes</TD>';
    echo 
'<TD align="center">'.date("d.m.Y H:i:s"filemtime($filepath.'/'.$file)).'</TD>';
}
  echo 
'</TABLE>';
}
/*
<HTML><BODY>
<HR>
<FORM action="<? echo $_SERVER['PHP_SELF']; echo '?action=upload'; ?>" method="POST" enctype="multipart/form-data">
<TABLE border="0" cellpadding="2" cellspacing="1" width="20%">
<TR><TH><H2>.:upload:.</H2></TH>
<TH><INPUT type="file" name="upfile"></TH>
<TH><INPUT type="hidden" name="MAX_FILE_SIZE" value="25000"></TH>
<TH><INPUT type="submit" value="upload"></TH></TR></TABLE>
</FORM>

<FORM action="<? echo $_SERVER['PHP_SELF']; echo '?action=del_file'; ?>" method="POST" enctype="multipart/form-data">
<TABLE border="0" cellpadding="3" cellspacing="1" width="20%">
<TR><TH></TH><TH>User</TH><TH>Password</TH><TH>[optional File]</TH></TR>
<TR><TH><H2>.:delete:.</H2></TH>
<TH><INPUT type="text" name="user"></TH>
<TH><INPUT type="password" name="passwd1"></TH>
<TH><INPUT type="text" name="file"></TH>
<TH><INPUT type="submit" value="exec"></TH></TR>
</TABLE></FORM>

<FORM action="<? echo $_SERVER['PHP_SELF']; echo '?action=ren_file'; ?>" method="POST" enctype="multipart/form-data">
<TABLE border="0" cellpadding="3" cellspacing="!" width="20%">
<TR><TH></TH><TH>User</TH><TH>Password</TH><TH>oldfile name</TH><TH>newfile name</TH></TR>
<TR><TH><H2>.:rename:.</H2></TH>
<TH><INPUT type="text" name="user"></TH>
<TH><INPUT type="password" name="passwd1"></TH>
<TH><INPUT type="text" name="old"></TH>
<TH><INPUT type="text" name="new"></TH>
<TH><INPUT type="submit" value="exec"></TH></TR>
</TABLE></FORM>
</BODY></HTML>
*/
?>

Seitenanfang Seitenende
27.03.2004, 21:06
Member
Avatar Xeper

Beiträge: 5291
#6 @Laserpointa

aso *lol* naja ne ist nicht schlimm ist nur evntl. bissl umständig soviel zeilen in nem Forum zu pasten ;)
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
28.03.2004, 01:47
...neu hier

Themenstarter

Beiträge: 4
#7

Zitat

Xeper postete
@Nickvp

Ich würde dir eher raten die servernahe .htaccess Lösung zu verwenden die auch sicherer ist - ist gibt websites mit php scripts etc. etc. aber evntl. werden die dir nicht ausreichen vielleicht bräuchtest du auch eine Datenbank wie mySQL so das php dann darüber die ganzen user herholt etc. Sowas würde ich selber schreiben aber wenn du es nicht kannst findest du evntl. nicht so eine spezifizierte Lösung und einfach passwds und user in eine datei zu knallen ist keine vernünftige Lösung. Und so wie ich das hier sehe geht es ja um mehrere User mit unterschiedlichen Passwörtern.

Habe hier dies: http://xeper.bounceme.net/files/phps/upload.phps

Das ist ein upload script womit man dateien in einen bestimmten ordner uploaden kann, dateien löschen kann und auch dateien umbenennen kann aber halt nur für einen Ordner - naja könntest dann so was ähnliches in jeden Ordner packen - oder halt ein script schreiben was global alle ordner managed.
Vielen Dank, Xeper, doch bräuchte ich tatsächlich eine Lösung, inder jeder individuell tun und lassen kann, was er will (nur halt eben in nur in seinem Ordner).

Was genau steht der erstgenannten Lösung im Wege? Die Sicherheit muss nicht absolut sein. Wir haben es nicht mit bösartigen Usern zu tun, die andere Projekte angreifen würden. Es soll eher verhindert werden, dass Umfälle passieren (also fremde Daten überschrieben werden).

Gibt es zudem eine Möglichkeit, die speicherkapazität eines Ordners zu beschränken?
Dieser Beitrag wurde am 28.03.2004 um 01:51 Uhr von Nickvp editiert.
Seitenanfang Seitenende
28.03.2004, 03:34
Member
Avatar Xeper

Beiträge: 5291
#8 @Nickvp

Naja der code da oben funzt schon nur das du den dann halt in jeden ordner kopieren müßtest und die passwörter auch in die Datei schreiben müßtest - so unsicher ist das mal gar nicht (aber es gibt nun mal nichts sicheres als über die Apache steuerdatei (.htaccess)) - allerdings brauchst du ja eh so ein script weil der user ja seine dateien irgendwie verwalten musst. Allerdings würde ich dafür mir dann ein globales script coden was mehrere Ordner verwalten kann und über mySQL Datenbank user und passwort abfragt - aber die möglichkeit mit der datenbank hast du ja evntl. gar nicht. Wie dem auch sei mit dem obigen script ist es theoretisch möglich - allerdings gibt es da auch nen hacken - natürlich kannst du nur kleine dateien hochladen ich denke mal nicht (weil PHP von natur aus ein limit drinnen hat und das werden wohl die admins nicht rausgenommen haben) außerdem wäre HTTP sowieso umständlich für 1gb dateien etc. In dem Falle nimmst du besser FTP - dafür ist es ja auch da.

Und naja die Speicherkapazität eines verzeichnises zu beschränken und das vom web aus - hmm das würde ich dann im script selber regeln gibt ja keine andere möglichkeit soweit ich weiss.
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
28.03.2004, 04:14
...neu hier

Themenstarter

Beiträge: 4
#9

Zitat

Xeper postete
@Nickvp

Allerdings würde ich dafür mir dann ein globales script coden was mehrere Ordner verwalten kann und über mySQL Datenbank user und passwort abfragt - aber die möglichkeit mit der datenbank hast du ja evntl. gar nicht. Wie dem auch sei mit dem obigen script ist es theoretisch möglich - allerdings gibt es da auch nen hacken - natürlich kannst du nur kleine dateien hochladen ich denke mal nicht (weil PHP von natur aus ein limit drinnen hat und das werden wohl die admins nicht rausgenommen haben) außerdem wäre HTTP sowieso umständlich für 1gb dateien etc. In dem Falle nimmst du besser FTP - dafür ist es ja auch da.
Ich glaube wir kommen der Sache näher.

Datenbanken stehen zur Verfügung und es handelt sich um Ftp-Uploads im Umfang von ca. 15 Mb pro Ordner.

Im Umgang mit Datenbanken habe ich keine Ahnung. Was empfielt sich hier als Einstieg? Oder gibt es vernünftige fertig-Scripts?
Seitenanfang Seitenende
28.03.2004, 04:51
Member
Avatar Xeper

Beiträge: 5291
#10 Wieviel MB müssen den in einen Ordner rein?
Datenbanken (wie zb. MySQL) wären vorteilhafter dann musst du aber ein anderes prog/script schreiben oder das obige erweitern - naja fertig scripts sind da nicht so geeignet. Am besten du hast nen kollegen der dir das macht. Keine Ahnung obs irgendwo fertige scripts für gibt - obwohl fertig immer blöd ist weil du ja nicht weißt A) wie sicher es ist B) blickst du ja nicht da selber durch - am besten ists wenn du nen kumpel hast der da Zeit investieren kann - ansonsten such halt nen fertig script gibt bestimmt welche aber da ist wieder die Frage ob die genau das machen was du gerne hättest. Das mit ftp wäre auch durch PHP realisierbar alles gar kein Problem.

Edit:

Ähm aber natürlich müßtest du dann mehrere ftp accounts machen etc. - wenns dein server ist ists eh kein Problem.
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Dieser Beitrag wurde am 28.03.2004 um 04:54 Uhr von Xeper editiert.
Seitenanfang Seitenende
Um auf dieses Thema zu ANTWORTEN
bitte erst » hier kostenlos registrieren!!

Folgende Themen könnten Dich auch interessieren:
  • »
  • »
  • »
  • »
  • »