Sicherheit: Datei auf Veränderung prüfen!

halbesbit

Aktives Mitglied
Also ich habe mir mal ein wenig über Sicherheit Gedanken gemacht und frage mich ob sowas sinnvoll wäre:
CODE
<?php
// dateiname:secured_file.php
$filename='index.php'; // die datei die "geschützt" werden soll!
if (!file_exists('Secure_'.md5_file($filename).'.php'))
{
if (isset($filename)){
$handle = fOpen('Secure_'.md5_file($filename).'.php' , "w+");
echo '<br>Datei <b>'.'Secure_'.md5_file($filename).'.php'.'</b> wurde erstellt !';
}

if ($handle)
{
foreach (file($filename) AS $zeile){
$checksum[]='"'.md5($zeile).'"';
}
$checkdaten = implode (',',$checksum);
$daten='<?php'."\n";
$daten.='//Erstellt mit:'.$_SERVER['PHP_SELF']."\n";
$daten.='//Datei wurde am:'.date("d.m.Y H:i:s",time()).' erstellt'."\n";
$daten.='$pfad="'.__FILE__.'";'."\n";
$daten.='$md5="'.md5_file($filename).'";'."\n";
$daten.='$checksum=array('.$checkdaten.');'."\n";
$daten.='?>';
if (isset($daten))
{
fwrite($handle, $daten);
}
} }
if ($handle){fclose($handle);}
?>



wie bekomme ich den pfad von $filename='index.php' ?
mit $daten.='$pfad="'.__FILE__.'";'."\n"; bekomme ich ja den pfad von secured_file.php
Da ich aber eine neue Datei erzeuge brauche ich dort ja den pfad von der zu schützenden Datei.

CODE
<?php
//Erstellt mit:/www/@halbesbit/test_01/www/vorlage/blaeterfunktion/secure.php
//Datei wurde am:31.05.2008 06:35:52 erstellt
$pfad="x:\xampp\htdocs\www\@halbesbit\test_01\www\vorlage\blaeterfunktion\secure.php";
$md5="90d64cc2a4611a4f69b7c78b4525258f";
$checksum=array("5735ce35f7fc6e6a44d85f25ff2982b1", "e73032e034f5462068aa414cdc535a10", "6ea92263b615d033bc2eb538ddeeb26d", "28664d2daa53a5900d55747ccc06be0e", "fe6abe360e19ebf0289f7a5fdb15ee90", "f84214fc43f665c79b92dc7a092b364f", "bf34ae30ed1dcd30adc7d8d8caa76446", "3d7dd2535a33ea40a879d12e11c74ddc", "d1cc754295f80302f50f1e85b0f97436", "b04ce4cf255adddc085f8c33264de7eb", "81051bcc2cf1bedf378224b0a93e2877", "81051bcc2cf1bedf378224b0a93e2877", "47864b0945546f2883eb1b9e3d2b72a1", "c5160093f8283a5a0482d4560fc596cf", "caa1f02aa39c0a7222cd74d8793ad853", "796d8aabd542c5357744272a56af3c6c", "a94b41f6c6990f798ca04413e1f2bddc", "df3995adfef69bc118334aef3a6911ad", "9237aa2a8ea2f5d5df5ff57c3d3437c7", "4f22cd9fbccf13251def9a99b9cec9fd", "81051bcc2cf1bedf378224b0a93e2877", "81051bcc2cf1bedf378224b0a93e2877", "521de7040666bfc6f2ac5d54b1b03db1", "10ae47a30af4e94fe9d83784b1096667", "2545a87dfafe2dc71afc2fae0611b809", "df3995adfef69bc118334aef3a6911ad", "45692ae24bfe52b2f378905acc95a1a8", "5b9715fe371a244e1b1b910e77f03f1c", "308065b5078a49f986fc3c9f9b66e5d3");


if (!md5_file($pfad)==$md5){
foreach (file($pfad) AS $zeile){
if (md5($zeile)==$md5){echo 'OK !';
}else{echo 'HACKED !';}
}
}
?>

 
Also ich möchte gerne wissen ob sowas überhaupt sinnvoll ist !Schreibt doch euro Meinung wenn es insinnig ist
wink.gif
oder wenn es sinn hat sowas so zu machen.
thx halbesbit
 
QUOTE (halbesbit @ Sa 31.05.2008, 07:57)Also ich möchte gerne wissen ob sowas überhaupt sinnvoll ist !Schreibt doch euro Meinung wenn es insinnig ist
wink.gif
oder wenn es sinn hat sowas so zu machen.

Ich verstehe den Sinn nicht.

Die FTP-Zugangsdaten wirst Du ja nicht frei verteilen. Und wenn jemand über Sql-Injektionen oder über das direkte Aufrufen einer PHP-Datei von einem anderen Server Code bei dir ausführt (und damit womöglich eine Datei ändert, die Du so überwachst), dann mußt Du diese Löcher zumachen.

So überwacht das bloß einen Teilaspekt hinten raus.
 
Das heißt es hat schon sinn,klar da fehlt ja zb das man dann evtl umgeleitet wird oder so.Was sollte man noch beachten/machen?
 
Naja,so ganz weiss ich das auch noch nicht kam mir halt so im kopf.Auf die idee kam ich weil wenn sich mal jemmand "reingehackt" hat dann muss man ja den ganzen Code durchsuchen um die stelle zu finden die evtl geändert wurde
 
Hm, die meisten modernen Entwicklungsumgebungen bieten doch mittlerweile solche Funktionen. Teilweise sogar sehr komfortabel.
 
QUOTE (halbesbit @ So 1.06.2008, 00:52) Naja,so ganz weiss ich das auch noch nicht kam mir halt so im kopf.Auf die idee kam ich weil wenn sich mal jemmand "reingehackt" hat dann muss man ja den ganzen Code durchsuchen um die stelle zu finden die evtl geändert wurde

Meiner Meinung nach kannst du statt die Integritätsprüfung der Dateien das Problem auch wie folgt lösen, indem du die Benutzerrechte der Dateien auf deinem Server einschränkst, sprich Schreibrechte deaktivieren, so dass ein beliebiger Benutzer über deine Webanwendung die bestehenden Dateien nicht überschreiben kann. Nach meiner Erfahrung sind solche Fälle, dass ein Benutzer über die Webanwendung eine Datei auf dem Server ändert, eher selten. Wie JAuer schon erwähnt hat, überwachst du damit nur einen Teilaspekt. Somit ist dein Sicherheitskonzept gegen Angriffe wie z.B. SQL-Injektionen, XSS..., welche einen grösseren Schaden anrichten kann, wirkungslos. Mit der Prüfung der Benutzereingaben auf möglichen Schadcodes wirst du viel mehr erreichen.
 
Zurück
Oben