Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

UT2003ler

Lebende Foren Legende

Dabei seit: 04.10.2002

Beiträge: 1 514

 

1 Zum Seitenanfang

Sonntag, 2. Dezember 2007, 11:06

Schädlichen mysql code ausfiltern?

Hoi!

Falls in einen $string ein Text an den Query übergeben wird, zum abfragen der Datenbank, und der $string schadhaften mysql code enthält, um die datenbank eventuell zu manipulieren... wie kann ich dagegen vorgehen? gibt es wie bei PHP/HTML eine funktion wie strip_tags(); ?

Würde mich freuen ^^ bei nummern hilft ja is_numeric.. aber bei text.. is ja sone sache ^^
Ich hatte schonmal was gelesen, aber vergessen wo ich das gelesen habe... Vorheer wars mir immer egal, aber jetzt will ich doch lieber auf sicherheit gehen ;) will ja mal keine böse überraschung erleben
wir leben um zu (er)leben

Website: www.virtoreal.net
 

jperl

Super Moderator

Dabei seit: 09.04.2003

Beiträge: 3 453

 

2 Zum Seitenanfang

Sonntag, 2. Dezember 2007, 13:04

mit irgendeiner programmiersprache wirst du wohl auf die mysql datenbank zugreifen müssen.

und die meisten sprachen bieten solche funktionen an. z Bsp. für php:
http://at.php.net/manual/de/function.mys…cape-string.php

jperl
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
 

UT2003ler

Lebende Foren Legende

Dabei seit: 04.10.2002

Beiträge: 1 514

 

3 Zum Seitenanfang

Sonntag, 2. Dezember 2007, 19:53

ah genau das was ich gesucht habe!
Vielen Dank :D
wir leben um zu (er)leben

Website: www.virtoreal.net
 

lay-z-cow

Foren As

Dabei seit: 10.07.2003

Beiträge: 98

 

4 Zum Seitenanfang

Dienstag, 4. Dezember 2007, 10:47

Hi,

abgesehen von dem escapen von Strings kannst du natürlich auch mit Regular-Expressions arbeiten oder bei mySQL mit prepared Statements.

Ich persönlich verwende für fast alle Eingaben Regular Expressions, denn durch so eine Prüfung ist das Abfangen fehlerhafter Eingaben nunmal sehr einfach.
mysql-real-escape-string maskiert kritische Daten ja nur.


Gruß

.:lay-z-cow:.
Guten Tag, Tag zusammen - Ich stecke eure kleine Welt in Flammen...
Burning-Star - Back in Town!
 

UT2003ler

Lebende Foren Legende

Dabei seit: 04.10.2002

Beiträge: 1 514

 

5 Zum Seitenanfang

Dienstag, 4. Dezember 2007, 15:42

was verstehst du unter regular expressions? *wissensdurst* ^^
wir leben um zu (er)leben

Website: www.virtoreal.net
 

lay-z-cow

Foren As

Dabei seit: 10.07.2003

Beiträge: 98

 

6 Zum Seitenanfang

Dienstag, 4. Dezember 2007, 16:24

Also Regular Expressions gibt es in fast jeder Programmiersprache...
Damit legt man so etwas wie "Schablonen" für einen String fest.

Beispiel:

PHP-Quelltext

1
[a-z0-9_]{1,5}

Ist die "Schablone" für einen String der die Buchstaben a-z enthält, die Ziffern 0-9 und den Unterstrich _. Außerdem darf der String zwischen eins und fünf Zeichen lang sein.

Das ganze kann man z.B. zum Durchsuchen von Strings nach speziellen Vorkommnissen benutzen, aber durch Begrenzungen kann man auch überprüfen, ob der gesamte String einer solchen Regular Expression entspricht.

Beispiel mit preg_match (gibt wahr oder falsch zurück, je nachdem ob es passt oder nicht)

PHP-Quelltext

1
2
3
4
5
if (!preg_match("^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}\$",$_POST['email'])){
echo "das ist keine korrekte email adresse!";
}else{
echo "email adresse ok!";
}


Das ist schon ein recht kompliziertes Beispiel, aber preg_match prüft $_POST['email'] auf folgenden Aufbau:

- Erst müssen Buchstaben, Zahlen, Unterstriche, Bindestriche und Punkte kommen
- dann ein @-Zeichen
- Dann wieder wie bei Punkt eins
- Dann ein Punkt
- Zuletzt zwei bis vier Buchstaben

Alles was nicht diesem Schema entspricht kann man also abfangen. :)

PHP-Quelltext

1
2
Ein einfacheres für PLZ
^[0-9]{5}$

- Nur Ziffern von eins bis neun und zwar genau fünf!

RegEx haben eine eigene Syntax und daher müssen auch eigene Steuerzeichen escaped werden. Ich kann das bestimmt nicht so gut erklären wie andere, am besten einfach danach googeln.

Der Vorteil ist: Ich kann in einem Zug prüfen, ob das eingegebene das korrekte Format (z.B. email-Adresse) hat und dabei auch gleichzeitig Schadcode ausschließen.

Allerdings muss man dazu die RegEx natürlich auch immer ordentlich basteln :) - Aber im Endeffekt lohnt sich der Mehraufwand (spätestens bei der nächsten Seite, wenn man sie wieder verwenden kann)


Hier noch ein paar Funktionen, die das teilweise automatisiert machen (besser als is_numeric)
http://de2.php.net/ctype_alnum
http://de2.php.net/manual/de/function.ctype-alpha.php
http://de2.php.net/manual/de/function.ctype-digit.php


Gruß

.:lay-z-cow:.
Guten Tag, Tag zusammen - Ich stecke eure kleine Welt in Flammen...
Burning-Star - Back in Town!
 

UT2003ler

Lebende Foren Legende

Dabei seit: 04.10.2002

Beiträge: 1 514

 

7 Zum Seitenanfang

Dienstag, 4. Dezember 2007, 16:34

wow... saugute erklärung...

das gleiche machte ich mit der email... jedoch umständlicher.. nicht mit preg_match sondern so if ($part1 ==! '@') $error = true; ^^ sehr umständlich u.s.w ^^

wunderbar... noch nie was von diesem preg_replace gehört... eine super sache :D

Vielen vielen dank ;)

EDIT:
Ich hab mal etwas probiert... gugg ... bissl schwierig aber eigentlich immer es selbe

PHP-Quelltext

1
if (preg_match("^([a-z0-9]{1,2})+-([0-9]{1,2})+-([0-9]{4})+-([0-9]{1,2})+-([0-9]{1,2})+-([0-9]{1,2})+.([a-z]{3})\$",$_POST['blogpic']))


Das überprüft z.B sowas: sollte es ^^ 3-12-2007-14-46-37.jpg

dabei hab ich den bindestrich immer nach den + angefügt wie bei deinen beispiel das @... weiss nicht ob das so funzt ^^ hoffe ich zumidnest...

Würde das so klappen?
wir leben um zu (er)leben

Website: www.virtoreal.net

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »UT2003ler« (4. Dezember 2007, 16:54)

 

Skittles

Moderator

Dabei seit: 14.02.2004

Beiträge: 3 014

 

8 Zum Seitenanfang

Dienstag, 4. Dezember 2007, 17:28

[0-9] kann man mit \d abkürzen, [0-9a-zA-Z_] mit \w ....

http://tut.php-quake.net/regex.html

ist nen relativ gutes tut zu dem thema.

zahlen kann man noch gut mit intval() platt machen, da ist dann auch nichts anderes mehr als eine zahl (integer) drin, also auch sehr praktisch

~!__/
..o.o

This is Einkaufswagen.
Copy Einkaufswagen into your signature to help him on his way to world domination.
 

lay-z-cow

Foren As

Dabei seit: 10.07.2003

Beiträge: 98

 

9 Zum Seitenanfang

Dienstag, 4. Dezember 2007, 17:43

@UT2003ler:
Die Pluszeichen solltest du weglassen, die heissen, dass die Zeichenfolgen unbegrenzt oft vorkommen können, du willst sie aber mit {} begrenzen.

Wichtig ist, dass man seine RegEx nicht nur daruaf prüft, was nicht durchkommt, sondern auch darauf was durchkommt.

Der Link von Skittles ist eigentlich schon ne gute Adresse, das Problem ist, dass ist alles so praxisfern und unansehnlich... (Ich hasse diesen Foo-bar Pseudocode)

Am besten suchst du dir alle möglichen Operatoren/Abkürzungen aus der PHP-Referenz und hantierst ein wenig damit herum.

Was mich so richtig auf den Geschmack gebracht hat, war allerdings mod_rewrite (das Apache Modul), das funktioniert ebenfalls mit RegEx, macht aber mehr Spaß zum üben (und kann nicht schaden davon Ahnung zu haben). Das hier ist ein tolles Tutorial dazu:
http://www.sitepoint.com/article/apache-mod_rewrite-examples


Gruß

.:lay-z-cow:.
Guten Tag, Tag zusammen - Ich stecke eure kleine Welt in Flammen...
Burning-Star - Back in Town!
 

UT2003ler

Lebende Foren Legende

Dabei seit: 04.10.2002

Beiträge: 1 514

 

10 Zum Seitenanfang

Dienstag, 4. Dezember 2007, 20:38

Besten Dank für die Hilfe...

Jedoch brauch ich noch etwas hilfe ^^

Mein Code:

PHP-Quelltext

1
if (preg_match("^([a-z0-9]{1,2})-([0-9]{1,2})-([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2}).([a-z]{3})\$",$_GET['blogpic'])) $blogpic $_GET['blogpic'];


Mein Error: ^^
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /var/www/virtual/virtoreal.net/htdocs/Pictures/Pic.php on line 65

Ich hab nun mal ein ^ am ende des " gemach... quasie so -z]{3})\$^",$_G
scheinbar funktioniert es... aber es wird doch niergendwo so gemacht?

Nanu? ^^
wir leben um zu (er)leben

Website: www.virtoreal.net
 

Skittles

Moderator

Dabei seit: 14.02.2004

Beiträge: 3 014

 

11 Zum Seitenanfang

Dienstag, 4. Dezember 2007, 20:48

Du musst das Muster so angeben, das weicht vom mod-rewrite synthax AB:

delimiterpatterndelimitermodifiers


Der Delimiter ist ein Zeichen deiner Wahl. Ich rate dir irgendwas zu benutzen, was nicht in deiner Pattern vorkommt, zB #,~,... , da du den Delimiter sonst escapen müsstest.

Kleines Bsp:

PHP-Quelltext

1
preg_match("~\w{3}~",...);

~!__/
..o.o

This is Einkaufswagen.
Copy Einkaufswagen into your signature to help him on his way to world domination.
 

UT2003ler

Lebende Foren Legende

Dabei seit: 04.10.2002

Beiträge: 1 514

 

12 Zum Seitenanfang

Mittwoch, 5. Dezember 2007, 13:08

Ach so ist das...

gut zu wissen :D

Vielen Dank Skittles
wir leben um zu (er)leben

Website: www.virtoreal.net