AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken LIKE auf mehrere Möglichkeiten anwenden
Thema durchsuchen
Ansicht
Themen-Optionen

LIKE auf mehrere Möglichkeiten anwenden

Ein Thema von faux · begonnen am 14. Apr 2006 · letzter Beitrag vom 16. Apr 2006
Antwort Antwort
Seite 2 von 2     12   
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: LIKE auf mehrere Möglichkeiten anwenden

  Alt 16. Apr 2006, 08:28
@generic: Lese mal meinen Beitrag #5
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#12

Re: LIKE auf mehrere Möglichkeiten anwenden

  Alt 16. Apr 2006, 10:22
Btw: statt LIKE kannst du auch REGEX verwenden. Und dann kannst du nach regulaeren Ausdruecken suchen. Das ganze ist wahrscheinlich ein bisschen langsamer (muesstes du mal ausprobieren) aber praktisch. Denn du kannst einfach nach
AND serie REGEX '/^\d/' Suchen und bekommst nur alles, was mit einer Ziffer anfaengt. Mit regexen laesst sich natuerlich noch viel mehr anfangen .
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: LIKE auf mehrere Möglichkeiten anwenden

  Alt 16. Apr 2006, 11:45
Zitat von generic:
AND serie LIKE ".$_POST['such']."%"; wer sowas benutzt braucht sich nicht zu wundern wenn die datenbank leer ist oder die seite defaced wird!
Also dann kann ich ja froh sein, dass ich nicht dabei bin.

Zitat von generic:
Also so habe ich das noch nicht gesehen. Ich habe aber am Anfang meines Skriptes folgende Zeilen stehen:
Code:
[color=#800080]foreach[/color] ([color=#000080][i]$_GET[/i][/color] [color=#800080]as[/color] [color=#000080][i]$value[/i][/color])
{
  [color=#000080][i]$value[/i][/color] = mysql_real_escape_string([color=#000080][i]$value[/i][/color]);
}
Diese habe ich aber deswegen eingefügt, dass bei einer Eingabe von einem ' kein SQL-Fehler entsteht, an solche bösen Ideen habe ich noch garnicht gedacht. Aber so sollte das ganze doch auch sicher sein, oder?

Jetzt wo ihrs sagt: Ich machs dem Angreifer auch so einfach wie es nur geht. Ich stell ihm sogar das ganze Query zur Verfügung:

Code:
<!-- SQL: Query successful: '
  SELECT s.id, serie, band, zusatz, t.type, author, p.publisher AS verlag, isbn, price, pages, publish_month, publish_year, notes
  FROM page_series AS s, page_types AS t, page_publishers AS p
  WHERE s.type = t.id
    AND p.id = s.publisher
  ORDER BY serie, band ASC' -->
Seht euch mal den Quellcode an bitte: http://web575.servana.de/animeworld/series.php. Ist das unsicher, wenn ich hier jede SQL-Aktion ausgebe?
btw: Bin nur der Programmierer; für den Inhalt kann ich nicht haften.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#14

Re: LIKE auf mehrere Möglichkeiten anwenden

  Alt 16. Apr 2006, 12:02
Zitat von faux:
Code:
[color=#800080]foreach[/color] ([color=#000080][i]$_GET[/i][/color] [color=#800080]as[/color] [color=#000080][i]$value[/i][/color])
{
  [color=#000080][i]$value[/i][/color] = mysql_real_escape_string([color=#000080][i]$value[/i][/color]);
}
Diese habe ich aber deswegen eingefügt, dass bei einer Eingabe von einem ' kein SQL-Fehler entsteht, an solche bösen Ideen habe ich noch garnicht gedacht. Aber so sollte das ganze doch auch sicher sein, oder?

Grüße
Faux
WAS???? Das funktioniert bei dir???
Du hast bestimmt nur magic-quotes aktiviert, die das fuer dich machen, denn deine foreach-schleife macht garnichts.
Denn in foreach($ar as $v) ist $v nur eine KOPIE der variable. Jede veranderung, die du da reinschreibst ist sofort wieder futsch!
Erst ab PHP5 kannst du statt $v auch eine Referenz verwenden (&$v). Dann kannst du auch aendern.

Siehe: http://us2.php.net/manual/en/control...es.foreach.php
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#15

Re: LIKE auf mehrere Möglichkeiten anwenden

  Alt 16. Apr 2006, 12:36
Also um die Performance noch bischen zu heben, würde ich erstmal all diese Konstrukte mit like, substring und regexp verwerfen, da die allesamt grottenlahm sind.

Im Fall wird doch lediglich nach Einträgen gesucht, die mit einem bestimmten Anfangsbuchstaben oder Anfangszeichenkette beginnen. (z.B. mit Buh)
... where serie >= 'Buhand serie < 'Bui' ... Einen schönen Index auf das Serie-Feld, und das Ganze wird um Ecken schneller sein.
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#16

Re: LIKE auf mehrere Möglichkeiten anwenden

  Alt 16. Apr 2006, 12:53
Zitat:
Seht euch mal den Quellcode an bitte: http://web575.servana.de/animeworld/series.php. Ist das unsicher, wenn ich hier jede SQL-Aktion ausgebe?
Ja ist (soweit ich sehe) sicher. Wenn es nicht sicher waere, dann waere es auch nur Sicherheit powered by Verschleierung. Waere nicht gut.
Ich wuerde das am Ende aber trotzdem rausnehmen. Das ist irgendwie trafficverschwendung. Gut ist ja nicht viel aber wenn wir uns hier schon ueber jede Performancsteigerung streiten .
Du kannst dir ja eine Konstante DEBUGGING definieren, die du auf true oder false setzt. Danach kannst du dann soclhe Ausgaben machen.

DENK aber an deinen foreach-Fehler!
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: LIKE auf mehrere Möglichkeiten anwenden

  Alt 16. Apr 2006, 12:57
@yankee:
Äähm..
Das habe ich natürlich nicht dort stehen.
Ich habe das dort stehen:
Code:
foreach ($_GET as $name => $value)
{
  $_SQL[$name] = $sql->escape($value);
}
Und in jeder SQL-Aktion benutze ich anstatt von $_GET dann $_SQL.
Den vorherigen Code habe ich (wieso auch immer) nur schnell mal hier her geschrieben, weil ich gerade keine Datei offen hatte.

btw: Ja, MAGIC_QUOTES sind aktiv (zumindest hat beim Aufruf von seite?foo=bar'bar die Variable $_GET['foo'] den Wert bar\'bar. Weiß nicht ob das die MAGIC_QUOTES sind.).

Ja, das mit der DEBUG-Konstante hab ich auch so gelöst.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#18

Re: LIKE auf mehrere Möglichkeiten anwenden

  Alt 16. Apr 2006, 13:09
Wenn du magic-quotes anhast und mysql-escape machst, dann encapsed du die ' aber glaube ich doppelt. Bin mir allerdings jetzt gerade nicht so sicher. Denn wenn du magic0quotes anhastm dann brauchst du mysql_escape nurnoch fuer so ein paar komische werte, was aber kein Sicherheitsrisiko mehr darstellt.
*hicks* sry, wenn es sich schwer lesen lest, ich bin to muede und geh jetzt auch mal ins Bett ...
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: LIKE auf mehrere Möglichkeiten anwenden

  Alt 16. Apr 2006, 20:42
Zitat von yankee:
Wenn du magic-quotes anhast und mysql-escape machst, dann encapsed du die ' aber glaube ich doppelt.
Habe ich auch bemerkt. Aber nachdem sowieso keine ' in Strings vorkommen sollen, is mir das egal.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz