Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
 
 
 

Funktion um Mysql Injection oder Cross-Site-Scripting-Lücken zu verhindern

Sie befinden sich: Home > Php Tutorial > Funktion um Mysql Injection...

Funktion um Mysql Injection oder Cross-Site-Scripting-Lücken zu verhindern


Eintrag am:  03.03.2008
Hits / Besucher:  9393
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Es ist heute immer wichtiger, dass Sie die Eingaben von einem User vor der Ausgabe bzw. Weiterverarbeitung per Escape escapen werden, um „Mysql Injection“ oder „Cross-Site-Scripting-Lücken“ zu verhindern.

Da es sonst möglich ist eine Manipulation von extern auf das Script zu machen. Man kann sich mit dieser Escape-Funktion davor schützen. Es ist zu empfehlen vor der Weiterverarbeitung einer Variable immer die Daten durch diese Funktion laufen zu lassen.

<?php

function cleaninput($input, mysqli $mysql) {
if (ini_get('magic_quotes_gpc') !== false &&
function_exists('get_magic_quotes_gpc')== true
&& get_magic_quotes_gpc()==1) {
$input = stripslashes($input);
}
$input = mysqli_real_escape_string($mysql, $input);
return $input;
}
$mysql=mysqli_connect("localhost","my_user","my_password","my_db");
// Ansprechen der Function per GET
$get_daten = cleaninput($_GET["get_daten"],$mysql);
echo $get_daten;
// Ansprechen der Function per POST
$post_daten = cleaninput($_POST["post_daten"],$mysql);
echo $post_daten;
?>

Erklärung:

Der oben gezeigte Code ist eine Funktion namens cleaninput(), die verwendet wird, um eine Eingabe von $_GET oder $_POST in einer MySQL-Datenbank zu bereinigen. Diese Funktion nimmt zwei Argumente entgegen: $input und $mysql. Der $input-Parameter ist der Wert, der aus dem $_GET oder $_POST-Array abgerufen wird. Der $mysql-Parameter ist eine Verbindung zur MySQL-Datenbank. 

Als Erstes überprüft die Funktion, ob magic_quotes_gpc aktiviert ist. Wenn ja, werden die Anführungszeichen und Backslashes entfernt. Anschließend wird der $input-Parameter mit der mysqli_real_escape_string()-Funktion gesäubert. Diese Funktion ersetzt alle Zeichen, die eine SQL-Injection verursachen könnten, durch sichere Zeichen. Schließlich wird der gesäuberte Wert an die aufrufende Stelle der Funktion zurückgegeben.

Um die Funktion aufzurufen, muss sie mit dem $input-Parameter sowie einer gültigen MySQL-Verbindung aufgerufen werden. Im oben gezeigten Code wird die Funktion zweimal aufgerufen: einmal für den $_GET-Parameter und einmal für den $_POST-Parameter. Die gesäuberten Werte werden anschließend auf der Seite ausgegeben.

 

Wofür könnte die Funktion: cleaninput() verwendet werden? 

Die Funktion cleaninput() kann in einer Vielzahl von Situationen verwendet werden, in denen Benutzerdaten aus Formularen oder anderen Eingaben verarbeitet werden müssen. Einige Beispiele sind:

  • Verarbeitung von Benutzerregistrierungen
  • Speichern von Benutzerprofildaten
  • Verarbeiten von Benutzerbewertungen
  • Speichern von Benutzerkommentaren
  • Erfassen von Benutzereingaben in einer Datenbank

 

Was ist eine Mysql Injection?

Eine MySQL-Injection ist eine Art von Angriff, bei dem böswillige Benutzer schädlichen Code in ein Eingabefeld eingeben, um die Daten in einer MySQL-Datenbank zu manipulieren. Diese Art von Angriff kann durch falsch konfigurierte Anwendungen, die schlecht gesicherte Formulare oder unsichere Eingabefelder verwenden, erfolgen.

Ein Angriff kann beispielsweise auf folgende Weise erfolgen: Ein Angreifer kann einen SQL-Befehl in ein Eingabefeld eingeben, das an eine Datenbank angeschlossen ist. Wenn das Eingabefeld nicht ausreichend gesichert ist, kann der Befehl direkt an die Datenbank gesendet und ausgeführt werden. Der Angreifer kann dann etwa ein Administratorkonto erstellen, Datenbanktabellen ändern oder löschen, Benutzerkonten hacken oder sensible Informationen abrufen.

 

Was ist eine Cross-Site-Scripting-Lücke?

Cross-Site-Scripting (XSS) ist eine Art von Sicherheitslücke, die es Angreifern ermöglicht, schädlichen Code auf einer Website auszuführen. XSS-Angriffe werden normalerweise durch unsichere Eingabefelder auf einer Website ausgelöst, in die Benutzer HTML- oder JavaScript-Code eingeben können. Wenn ein Eingabefeld nicht ausreichend gesichert ist, kann der Code, den der Benutzer eingibt, auf der Website ausgeführt werden.

Ein Angriff kann beispielsweise auf folgende Weise erfolgen: Der Angreifer kann durch die Eingabe von schädlichem Code in ein Eingabefeld eine schädliche Skript-Datei auf der Website ausführen. Wenn ein Benutzer die betroffene Seite besucht, wird das Skript ausgeführt und kann dann unter anderem sensible Daten stehlen, Benutzerkonten hacken oder andere schädliche Aktionen ausführen.

 

Wie kann ich in PHP Cross-Site-Scripting-Lücken vermeiden?

Um Cross-Site-Scripting-Lücken in PHP zu vermeiden, sollten Entwickler die folgenden Strategien anwenden:

  • Verwenden Sie immer die Funktionen htmlspecialchars() und htmlentities(), um HTML- und JavaScript-Code in Eingabefeldern zu säubern.
  • Verwenden Sie niemals die Funktionen eval() oder exec() auf Benutzereingaben.
  • Nutze die PHP-Funktionen stripslashes() und addslashes(), um Anführungszeichen und Backslashes zu entfernen.
  • Verwenden Sie immer Input-Validation und Output-Encoding, um Eingaben zu validieren und auszugeben.
  • Vor den Speichen verwende immer die Funktionen wie cleaninput(), strip_tags(), filter_input() und filter_var(), um Eingaben zu filtern.

 

Tags:

 

Artikel hinzufügen bei:
         
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.