Login  Regeln Aktuelles Datum und Uhrzeit: 08.01.2009, 20:23  
Startseite
Registrieren
Profil
Suchen
Mitgliederliste
Verzeichnis
Impressum



Partner
kostenlose Homepage
Fussball
Kostenloses Forum
SMS kostenlos
Webhosting
Webmasterportal
Kostenlos
Kredit ohne Schufa
Esoterik-Forum
Selbsthilfeforum
Artikel Backlink
Datenrettung
Sicherheitsproblem MySQL -> SQL Injection
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Webmaster Forum -> Serverseitige Websprachen
Vorheriges Thema anzeigen Nächstes Thema anzeigen 
Autor Nachricht
eforium
Bekannter [Mod]
Bekannter



Anmeldung: 20.01.06
Beiträge: 1364
Wohnort: Irgendwo i ...

BeitragVerfasst am: 12.06.2007, 16:38    Titel: Antworten mit Zitat

Danke für den Aufschlussreichen Tipp, hilft mir Winken
_________________
Deihro Internet Programming - Ihre Webseite zu angenehmen Konditionen
Sie suchen eine TemplateEngine? Klicken Sie!


Nach oben
Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
800XE
Bekannter [Mod]
Bekannter



Anmeldung: 24.10.04
Beiträge: 1499
Wohnort: Speyer

BeitragVerfasst am: 12.06.2007, 18:07    Titel: Re: Allgemeine Sicherheit Antworten mit Zitat

maject hat folgendes geschrieben:
Code:
 where md5(benutzername) = '".md5($_POST['benutzer'])."' and md5(passwort) = '".md5($_POST['passwort'])."'

diesen Code fand ich Performenctechnisch garnicht gut ....
... habe eben die Posts darauf "abgetrennt"
www.webmasterwelt.net/artikel,8977,-sql-md5-performance.html

_________________
Seien wir realistisch, versuchen wir das Unmögliche!
CMS800 :::::::::: Andy 800XE Zmuda :::::::::
ich bin nicht unhöflich, ich bin binär


Nach oben
Private Nachricht senden Website dieses Benutzers besuchen
jonatan_männchen
User [User]
User



Anmeldung: 12.10.08
Beiträge: 10
Wohnort: Winterthur ...

BeitragVerfasst am: 12.10.2008, 13:11    Titel: Filter Antworten mit Zitat

Ich würde bei allen SQL-Abfragen die Variabeln in ein mysql_real_escape_string() oder ein intval() setzen.
Dazu würde ich eine Filterklasse machen(mit Whitelist):

(Mein Grundsatz: Alle Userdaten Filtern, ich habe darum verschiedene Filter gesendet (email, passwort, username, htmltags(auch in einem Array), länge)
Code:

<?php
class Filter{
   
   const EMAIL_PATTERN = '%^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$%';
   const PASSWORD_PATTERN = '%^[a-zA-Z0-9\_\$\+\*\ç\%\&\/\(\)\?\§]+$%';
   const USERNAME_PATTERN = '%^[a-zA-Z0-9\-_]+$%';
   
   public static function htmltags_array($content){
      $stripped = array();
      foreach($content as $key=>$value) {
         $stripped[$key] = strip_tags($value);
      } return $stripped;
   }
   public static function htmltags($content){
      if (strip_tags($content) == $content){
         return true;
      } return false;
   }
   public static function username($content, $length=0){
      $length_check = true;
      if(!empty($length)) {
         $length_check = self::length($content, $length);
      }
      if(preg_match(self::USERNAME_PATTERN, $content) && $length_check){
         return true;
      }else {
         return false;
      }
   }
   public static function password($content){
      if (preg_match(self::PASSWORD_PATTERN, $content)){
         if (self::length($content, 6) && !is_numeric($content)) {
            return true;
         } else {
            return false;
         }
      }else {
         return false;
      }
   }
   public static function email($content){
      if(preg_match(self::EMAIL_PATTERN, $content)) {
         return true;
      } return false;
   }
   public static function length($content, $lenght){
      if (strlen($content) >= $lenght){
         return true;
      } else {
         return false;
      }
   }
}
?>


Das wird so eingesezt:
Code:

<?php
require_once('Pfad/Filter.class.php');

if (Filter:username('##username##, '##mindestlänge(optional)##') && Filter:password('##username##)){
   mysql_connect('##host##', ##username##', '##password##');
   mysql_select_db('##db##');

   $sql="SELECT COUNT(*) FROM ##db## WHERE password=MD5('".mysql_real_escape_string('##password##').'") AND username='".mysql_real_escape_string('##username##')."'";
   mysql_query($sql);
   mysql_fetch_assoc();
} else {
   return false;
}
?>


Ich hoffe dass hilft
Jonatan


Nach oben
Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
hlag
User [User]
User



Anmeldung: 29.10.08
Beiträge: 10
Wohnort: Bonn

BeitragVerfasst am: 28.11.2008, 18:30    Titel: Antworten mit Zitat

Hi,

ich machs so:

ganz normale Query:
Code:

SELECT * FROM tab WHERE user = '$_POST['user']' AND pass = 'md5($_POST['pass'])'

Bis hierhin greift die sql-Injektion.

Daten abholen und in $value speichern.
Code:

if($_POST['user'] == $value ['user'] AND md5($_POST['pass']) == $value ['pass'] )
{
     // user logged in
     .....
}


Die Bedingung haut nur und nur hin, wenn das, was gepostet wurde auch in der Datenbank war.

Cool hlag

_________________
Klaus Blömeke

avaris | godot.de

SiteAlert - Websiteüberwachung


Nach oben
Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

Gehe zu:  

Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Frage zu MySql und Script eforium Serverseitige Websprachen 1 08.01.2009, 11:17 Letzten Beitrag anzeigen
Keine neuen Beiträge MySQL filtern Arnee Serverseitige Websprachen 5 06.01.2009, 02:41 Letzten Beitrag anzeigen
Keine neuen Beiträge Fehlersuche PHP MySQL placido Serverseitige Websprachen 4 11.12.2008, 19:54 Letzten Beitrag anzeigen
Keine neuen Beiträge Mysql update funktioniert nicht powerup Serverseitige Websprachen 3 22.10.2008, 18:01 Letzten Beitrag anzeigen
Keine neuen Beiträge Php skript im MYSQL einbinden sunnyboy881 Serverseitige Websprachen 1 24.09.2008, 07:37 Letzten Beitrag anzeigen
Threadübersicht