php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.05.2007, 11:24  
Neuer Benutzer
 
Registriert seit: 28.05.2007
Beiträge: 7
h0nIg
Standard Syntaxierung bei SQL-Strings

Ich wollte euch mal fragen wie ihr es bei euren Mysqlstrings handhabt, weil ich bin mir am überlegen ob ich dies nicht genauso mache im Gegensatz zu jetzt.

Also momentan sehen meine Sql-Strings z.b. so aus:

Code:
"SELECT * FROM ".$db_prefix."contents WHERE content_id = ".$_GET['content_id'];
Jetzt hab ich mir aber gedacht das es sinnvoller ist mit ' zu arbeiten, um gegebenfalls bösen Buben das Handwerk zu legen. Das würde eben so aussehen:

Code:
"SELECT * FROM ".$db_prefix."contents WHERE content_id = '".$_GET['content_id']"'";
Seht ihr da ein Unterschied technisch gesehn, weil in diesem Beispiel ist die ID vom Typ Interger. Das Benutzen von ' ist aber nicht nur auf ein SELECT bezogen, sondern auf alle Querys.

bye h0nIg
h0nIg ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.05.2007, 12:23  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Von SELECT * würde ich sowieso abraten, weil das länger dauert.

Aber im Prinzip sehen meinen Querys so ähnlich aus. Benutzer allerdings noch eine Mysql Klasse die mir die querys noch mal säubert
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline  
Alt 28.05.2007, 12:44  
Neuer Benutzer
 
Registriert seit: 28.05.2007
Beiträge: 7
h0nIg
Standard

Und die wäre? Ich seh jetzt nicht welchen sqlstring du besser findest :>
h0nIg ist offline  
Alt 28.05.2007, 13:00  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo und willkommen im Forum
Grundsätzlich solltest du keinen User-Input direkt im Query verwenden, sondern ihn stattdessen vorher escapen.

Ich schreibe meine Queries meist so:
PHP-Code:
<?php
$sSql 
sprintf("SELECT `col1`, `col2` FROM `table` WHERE `id` = %u AND `name` = '%s'"$_GET['id'], $this->_quoteValue($_GET['name']));
?>
quoteValue
PHP-Code:
<?php
private function quoteValue($value)
{
  if (
get_magic_quotes_gpc()) {
    
$value stripslashes($value);
  }
  return 
mysql_real_escape_string($value$this->_connectionLink);
}
?>
Das heißt Eingaben, in denen ich eine Zahl erwarte, lasse ich von sprintf() in UNSIGNED INT (%u) umwandeln, alles restliche wird mit mysql_real_escape_string() abgesichert.

Um noch auf deine direkte Frage zu antworten: Natürlich ist der 2. Query besser, er ist aber immernoch schlecht.
Im 1. Query erzeugt alles, was keine Zahl ist einen Fehler und per GET lassen sich ja sofort Werte fälschen. Der 2. ist allerdings auch schlecht, denn er erlaubt ungeprüft alle Werte, läd aber zu SQL-Injections ein, sollte Magic Quotes deaktiviert sein. Der größte Graus eines PHP-Skriptes ist es, wenn es nur unter bestimmten Konfigurationen lauffähig oder sicher ist.
Außerdem erwartest du ja eine Zahlenwert für content_id, warum also anderes erlauben?

Du solltest dir also schon etwas mehr Mühe machen, die Eingabe-Werte zu validieren.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Brauche Funktion um Strings aus einer txt-Datei zu zählen mark_gebert PHP Tipps 2006 11 16.08.2006 14:30
TAB innerhlab eines Strings. GELight PHP Tipps 2006 8 10.07.2006 21:16
Unterschiede in Strings finden PHP-Fortgeschrittene 1 18.04.2006 12:56
Mit if Abfrage innerhalb eines strings einen Ausdruck suchen tinchen PHP Tipps 2006 4 11.04.2006 10:18
[Erledigt] Mit Regulären Ausdrücken Strings erkennen. PHP-Fortgeschrittene 2 25.08.2005 01:09
doppelte Werte / Strings einer Spalte nur einmal ausgeben... Datenbanken 2 29.07.2005 12:10
Strings in Textarea bei CUrsor einfügen Freeaak HTML, Usability und Barrierefreiheit 2 26.07.2005 20:39
Strings aus einer Homepage lesen GrU3nL!nG PHP Tipps 2005-2 7 14.06.2005 16:26
Strings zerteilen... PHP Tipps 2005-2 2 13.06.2005 08:48
1. Zeichen eines strings löschen faux PHP Tipps 2005 5 22.03.2005 22:37
alle Positionen eines Strings innerhalb eines Strings finden PHP Tipps 2005 8 23.02.2005 20:21
strings sortieren aircrash PHP Tipps 2004-2 5 23.12.2004 16:57
metrische länge eines strings Sclot PHP-Fortgeschrittene 3 08.12.2004 13:54
[Erledigt] Strings saeubern PHP Tipps 2004 2 12.10.2004 15:52
[Erledigt] Strings manipulieren PHP Tipps 2004 2 02.08.2004 10:52

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
strings säubern in sql

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.