SELFPHP: Version 5.8.1 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 


Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 22.09.2007, 11:32:09
pattitheonly pattitheonly ist offline
Anfänger
 
Registriert seit: Jan 2007
Beiträge: 18
pattitheonly befindet sich auf einem aufstrebenden Ast
Sicher vor SQL Injections?

Ich habe hier meiner Seite mit Administrator LOGIN. Auf der Administator Seite bekommt man noch zusätzliche Infos angezeigt. Meine Frage ist,wie sicher ist dieser Zugang? Ist der ohne weiteres zu knacken? WIe kann man das dann wirkungsvoller schützen?
Danke
Patti

http://141.64.29.5/wetter/wetterstat...n%20Seite1.php
Mit Zitat antworten
  #2  
Alt 22.09.2007, 14:08:49
Benutzerbild von conmunich
conmunich conmunich ist offline
Junior Member
 
Registriert seit: Mar 2006
Alter: 35
Beiträge: 285
conmunich befindet sich auf einem aufstrebenden Ast
AW: Sicher vor SQL Injections?

sollen wir jetzt vielleicht die seite hacken, um das zu testen? was ist, wenn die seite nicht dir gehört und der besitzer keine erlaubnis dazu erteilt hat?

du solltest uns schon den quelltext zeigen, damit man dazu etwas sagen kann. und gewöhn dir an, keine leerzeichen in deinen dateinamen zu verwenden.

um mysql injections zu vermeiden, sind evtl. diese php funktionen interessant für dich: mysql_real_escape_string(), addslashes(), usw...

gegen xss cross site scripting attacken, wäre noch strip_tags() zu erwähnen.
Mit Zitat antworten
  #3  
Alt 22.09.2007, 14:38:44
pattitheonly pattitheonly ist offline
Anfänger
 
Registriert seit: Jan 2007
Beiträge: 18
pattitheonly befindet sich auf einem aufstrebenden Ast
AW: Sicher vor SQL Injections?

Hmm, da hast Du recht. Ich dachte eher dann so an Hinweise, was eine SQL Injektion überhaupt ist. Ich werde mich mal ein wenig darüber belesen. Hatte das neulich gelesen und hätte jetzt nicht gedacht, dass es für Profis so einfach ist solche Abfragen auszutricksen.

Eigentlich ist es doch nur möglich, wenn die Werte aus dem Eingabefeld direkt an die DB weitergericht werden, oder? Ich vergleiche zB nur den Wert aus den Eingabefeldern von dem Benutzer mit dem sein Hinterlegtes md5()Password.

PS. das mit den Leerzeichen ändere ich noch.
Danke.
Patti

Geändert von pattitheonly (22.09.2007 um 14:39:18 Uhr)
Mit Zitat antworten
  #4  
Alt 22.09.2007, 15:17:32
MatMel MatMel ist offline
Member
 
Registriert seit: Aug 2005
Beiträge: 644
MatMel befindet sich auf einem aufstrebenden Ast
MatMel eine Nachricht über ICQ schicken
AW: Sicher vor SQL Injections?

Eine mySQL Injection basiert eigentlich darauf, dass eine Variable, die von Benutzer gesetzt wird ungeprüft an einen mySQL Query weitergegeben wird.

Also zeigst du uns am besten mal den Code, damit wir schauen können wie das bei dir aussieht!
Mit Zitat antworten
  #5  
Alt 22.09.2007, 16:57:45
pattitheonly pattitheonly ist offline
Anfänger
 
Registriert seit: Jan 2007
Beiträge: 18
pattitheonly befindet sich auf einem aufstrebenden Ast
AW: Sicher vor SQL Injections?

Also hier mal der zu prüfende Code, ich würde eigentlich denken das er so passt, aber Ihr seid ja die Profis :-) Bin für jeden Tipp dankbar :-)

Code:
<?php
$verbindunng=MYSQL_CONNECT($server, $Benutzer, $Passwort) or Fehler_1(&$Fehler_1);
MYSQL_SELECT_DB($datenbank) or Fehler_2(&$Fehler_2);
      if(!isset($_POST['submit']))
      	{ $_POST['Benutzer'] = 0;		//anlegen der POST Variablen
         ?>
      	   <form action="<?php $PHP_SELF /*verlinkt auf die zur Wetterstation Seite1.php*/ ?>" method="post">
	         <table width="100%" bgcolor="#996566" border="0" cellpadding="5" cellspacing="0" align="center">
	           <tr>
	             <td bgcolor="#DADADA" align="center" colspan="2">
	             <b>Admin Login</b>
	             </td>
	           </tr>
	           <tr>
	             <td width="20%" bgcolor="#DADADA">User</td>
	             <td width="70%" bgcolor="#DADADA"><input type="text" name="Benutzer" size="10" class="input"<?php if($_POST['Benutzer'] != "" ) {echo ' value="'.$_POST['Benutzer'].'"';}?>></td>
	           </tr>
	           <tr>
	             <td width="20%" bgcolor="#DADADA">Pass</td>
	             <td width="70%" bgcolor="#DADADA"><input type="Passwort" name="Passwort" size="10" class="input"></td>
	           </tr>
	           <tr>
	             <td bgcolor="#DADADA" align="center" colspan="2">
	             <input type="submit" name="submit" value="Anmelden" class="button">
	             </td>
	           </tr>
	         </table>
	         </form>
	   		<?php
	   	}
         elseif(!$_POST['Benutzer'] || $_POST['Benutzer'] == "") 	//Benutzerfeld befüllt??
         {
         	echo ("
	         <script LANGUAGE='JavaScript'>
	         top.location.href='Wetterstation Seite1.php';
	         </script>
	     		 ");
         }
         elseif(!$_POST['Passwort'] || $_POST['Passwort'] == "")	//Passwortfeld befüllt?
         {
         	echo ("
	         <script LANGUAGE='JavaScript'>
	         top.location.href='Wetterstation Seite1.php';
	         </script>
	         ");
	   	}
         else
         {
     	    	$Passwort = md5($Passwort);              					
	         $sql = mysql_query("SELECT Benutzer, Passwort FROM Mitglieder WHERE Benutzer = '".$_POST['Benutzer']."'") or Fehler_4(&$Fehler_4);  //wähle das Passwort aus der DBmit dem Benutzer
	         $result = mysql_fetch_array($sql) or Fehler_4(&$Fehler_4);
	         if($Passwort != $result['Passwort'])                     	//wenn Passwort falsch,lade Seite neu
       		{
        			echo ("
         		<script LANGUAGE='JavaScript'>
	     			top.location.href='Wetterstation Seite1.php';
	     			</script>
	     		 ");
        		}
            else
            {
	      		$Benutzer = $result['Benutzer'];       						//erzeuge Sessionsvariable
	       		session_register('Benutzer');                       //registriere die Session
//automatische Weiterleitung an den Admin Bereich
	       		echo ("
	       		<script LANGUAGE='JavaScript'>
	       		top.location.href='Wetterstation Seite1_admin.php';
	        		</script>
	       		");
	      	}
			}
      MYSQL_CLOSE();
	   ?>

Geändert von pattitheonly (22.09.2007 um 17:00:12 Uhr)
Mit Zitat antworten
  #6  
Alt 22.09.2007, 17:16:35
pattitheonly pattitheonly ist offline
Anfänger
 
Registriert seit: Jan 2007
Beiträge: 18
pattitheonly befindet sich auf einem aufstrebenden Ast
AW: Sicher vor SQL Injections?

Ich sollte wahrscheinlich mysql_real_escape_string($_POST['Benutzer']) so noch mal absichern. Aber was ist der besonder Sinn der Funktion? Ich habe nur gelesen das alle Eingaben als String umwandelt, aber wird dann der eingschleusste Code nicht trotzdem ausgeführt?

Patti
Mit Zitat antworten
  #7  
Alt 22.09.2007, 18:53:32
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 45
Beiträge: 1.020
defabricator befindet sich auf einem aufstrebenden Ast
AW: Sicher vor SQL Injections?

Zitat:
Zitat von pattitheonly Beitrag anzeigen
Ich habe nur gelesen das alle Eingaben als String umwandelt, aber wird dann der eingschleusste Code nicht trotzdem ausgeführt?
Nochmal etwas mehr zum Thema lesen
http://de.php.net/security.database.sql-injection
Mit Zitat antworten
  #8  
Alt 24.09.2007, 21:00:37
pattitheonly pattitheonly ist offline
Anfänger
 
Registriert seit: Jan 2007
Beiträge: 18
pattitheonly befindet sich auf einem aufstrebenden Ast
AW: Sicher vor SQL Injections?

Hallo Leute,
könntet Ihr mir sagen ob dieser Code sicher vor SQL Injections ist?
In der Abfrage bin ich mir nicht sicher.
$sql = mysql_query("SELECT Benutzer, Passwort FROM Mitglieder WHERE Benutzer = '".$_POST['Benutzer']."'") or Fehler_4(&$Fehler_4);
Deshalb habe ich hier mysql_real_escape_string($_POST['Benutzer']) genommen. Aber die Funktion ist mir trotz nachlesen nicht wirklich klar. Ich mache damit einen String aus dem Wert in $_POST['Benutzer']?

Tausend Dank.

Patti
Mit Zitat antworten
  #9  
Alt 24.09.2007, 23:47:32
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 45
Beiträge: 1.020
defabricator befindet sich auf einem aufstrebenden Ast
AW: Sicher vor SQL Injections?

Zitat:
Zitat von pattitheonly
Aber die Funktion ist mir trotz nachlesen nicht wirklich klar. Ich mache damit einen String aus dem Wert in $_POST['Benutzer']?
Nein, das ist vermutlich schon eine Zeichenkette.
Hast Du Dir http://de.php.net/security.database.sql-injection durchgelesen? Da werden auch Beispiel gezeigt.
Mit Zitat antworten
  #10  
Alt 13.12.2007, 13:11:34
Tumasch Tumasch ist offline
Junior Member
 
Registriert seit: Dec 2007
Beiträge: 151
Tumasch befindet sich auf einem aufstrebenden Ast
AW: Sicher vor SQL Injections?

Mach dir mal ein HTML-File mit dem Formular und schreib im Benutzerfeld folgendes rein:

1' OR '1'='1

ODER

1'; DROP DATABASE 'dbname

Dann weisst du's.

Besser: $benutzer = preg_replace("'[^A-Z]'", "", $_POST['Benutzer']);
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Schützt htmlspecialchairs vor SQL Injections? Thomas H. PHP Grundlagen 7 03.09.2007 02:31:18
sql injections etc verhindern? uvo PHP Grundlagen 1 11.08.2006 20:08:12


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:24:07 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.


© 2001-2014 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt