Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Sichere SQL Abfrage - SQL Injektion

Eingetragen von joya (190)
am 12.11.2010 - 12:13 Uhr in
  • Allgemeines zu Drupal

hallo,
da ich keine Ergebnisse bei der Suche nach der mysql_real_escape_string -Funktion gefunden habe, möchte ich gerne folgende Frage stellen:

Wie schützt (und überhaupt) Drupal die SQL-Abfragen die an die Datenbank gehen?

Werden dafür Funktionen wie stripslashes und mysql_real_escape_string genutzt oder muss dies Programmierer selber in eigene SQL-Abfrage einbauen?

Um genau zu sagen, wenn ich selber eine SQL-Abfrage an die DB mache, entweder in einem eigenen Modul oder als PHP_Snippet direkt in einem Node und
verwende ich dafür Drupal-Funktionen wie z.B db_result, db_query, db_fetch_object....

Baut mir dann Drupal selber noch nötige Sicherheitsmechanismen dazu, oder muss ich es selber machen, um eine mögliche SQL-Injection zu verhindern?

‹ Drupal - Sichere Synchronität zw. Devel & Live-Version Daten Migrieren, Grundlegende Fragen und Organic Groups ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Selbstverständlich schützt

Eingetragen von tower (9)
am 12.11.2010 - 15:05 Uhr

Selbstverständlich schützt Drupal vor SQL Injektion.
Siehe dazu http://api.drupal.org/api/search/6/db_escape_string und auch hier http://api.drupal.org/api/drupal/includes--database.inc/group/database/6

  • Anmelden oder Registrieren um Kommentare zu schreiben

musst man diese Funktion

Eingetragen von joya (190)
am 12.11.2010 - 15:22 Uhr

musst man diese Funktion (db_escape_string($text)) selber bei einer SQL-Abfrage einbauen,
oder wird sie automatisch von z.B db_result() oder db_query() eingebunden?

danke

  • Anmelden oder Registrieren um Kommentare zu schreiben

mysql_real_escape_string()

Eingetragen von DrupalFan (1646)
am 01.02.2013 - 19:01 Uhr

In _db_query_callback(), welche von db_query aufgerufen wird, gibt es ein spezielles Handling aller übergebenen Parameter mit db_escape_string() für Stings und intval() für Integer usw.

Und was ist, wenn db_query() so aufgerufen wird:
db_query("SELECT * FROM user WHERE name = "$myname");
wobei $myname vielleicht sogar von $_POST['myname'] stammt????

Es kann doch leicht sein, dass viele das so verwenden.
Dann gibt es KEINEN Schutz vor SQL-Injections?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn Du bei eigenen

Eingetragen von wla (9463)
am 01.02.2013 - 19:44 Uhr

Wenn Du bei eigenen Programmen so vorgehst, hast Du die Schutzmöglichkeiten verschenkt, aber das liegt nicht an Drupal, sondern an Dir. Du bist bei eigenen Modulen selbst dafür verantwortlich, daß Du "richtig" arbeitest.
Es gibt bei Drupal Programmier-Richtlinien in denen das Vorgehen bei DB-Abfragen etc. genau vorgegeben wird. Du wirst auf drupal.org kein Projekt einstellen dürfen, das nicht den Mindestvoraussetzungen genügt.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

SQL Injection - kein magic quotes ab PHP5.4

Eingetragen von DrupalFan (1646)
am 01.02.2013 - 20:03 Uhr

Ja klar.
Es geht aber weniger um das Programmieren von Modulen, sondern einfach um das Erweitern (z. Bsp. in tpl.php Dateien usw).

Ich wundere mich nur, dass das Thema "SQL Injection" hier im gesamten Drupalcenter nur in einem einzigen Thread so richtig vorkommen (also hier).

Ich glaub nicht, dass beinahe alle Programmierer die Anweisung
1) db_query("SELECT * FROM user WHERE name = '$myname' ...")

in dieser Form schreiben
2) db_query("SELECT * FROM user WHERE name ='%s' ....", $myname)

Naja, da man beim normalen Programmieren (nicht für Drupal) auch die Schreibweise 1) benutzen kann, wenn man vorher mysql_real_escape_string() über $myname ausführt (wenn es sich um Formularwerte handelt), ist man halt diese Schreibweise gewohnt und es wird daher sichert oft vorkommen, dass zumindest einige Programmiere die Schreibweise 1) benutzen.

Das öde an dieser Sache ist halt immer, dass hier überhaupt KEINE Fehlermeldung, kein Hinweise usw. kommt.
Es ist ja toll, dass diese Sicherheit in die Funktion db_query eingebaut ist, aber bei Variante 1) doch anscheinend nicht. Also eine gefährliche Sicherheit,....

Aber grundsätzlich scheinen diese SQL-Injections nicht so gefährlich zu sein.
Derzeit sind ja noch auf vielen Webserver "magic quotes" aktiviert.
Leider wird es dann ab PHP5.4 doch etwas gefährlicher, weil es dann wie es aussieht keine magic quotes mehr gibt.

Und da geht es weniger darum, dass es Programmierer gibt, die die Coderichtlinien nicht einhalten, sondern eher DARUM:
Jedem Programmierer kann es in der Hektik doch bei hunderten oder tausenden Codezeilen passieren, dass er einmal eine Schreibweise 1) statt 2) wählt .... Wer behauptet, das würde ihn niemals (also 100%) passieren, der behauptet fehlerfrei zu sein. Aber so ein Fehler kann jedem mal passieren ...

Und genau für diese Fehler, wo man halt mal nicht darauf geachtet hat, war "magic quotes" (falls aktiviert) eine gute Sache ... weil ein zusätzlicher Schutz für diese wenigen Fälle, wo man sich halt vertan hat!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Alles, was an den original

Eingetragen von wla (9463)
am 01.02.2013 - 20:26 Uhr

Alles, was an den original PHP-Files von Drupal ändert, ist für mich Programmierung. Wer programmiert ist für das Ergebnis selbst verantwortlich. Sorry, wenn ich das so hart formuliere.
In der Dokumentation zur Dupal-API, auch bei den Datenbankfunktionen, wird auf die "ordentliche" Programmierung ausdrücklich hingewiesen. Ich kann niemand aus der Pflicht nehmen, sich danach zu richten.
db_query ist eine Funktion, die einen oder mehrere Parameter haben kann. Nur wenn ich die dadurch entstehenden Möglichkeiten richtig nutze erzeuge validen Code. Flüchtigkeit ist da für mich keine Ausrede.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

PHP5.4

Eingetragen von DrupalFan (1646)
am 01.02.2013 - 20:37 Uhr

Wie gesagt, es wird vielen Programmierern passieren, das eine oder andere Mal die obige Codezeile so wie in 1) zu schreiben statt wie in 2).

Und richtig zum Problem werden diese kleinen Fehlerchen erst ab PHP5.4, wenn magic quotes ausläuft.

Da aber niemand von SQL Injection - Hack-Angriffen berichtet, wird das wohl nicht so oft vorkommen, dass auf diese Weise gehackt wird ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
Weiter

Neue Kommentare

  • Arrrrg. Nix Tabelle :-D /*
    vor 3 Wochen 3 Tagen
  • Textboxen mit Tabelle
    vor 3 Wochen 3 Tagen
  • Du sollst ja auch keine
    vor 3 Wochen 3 Tagen
  • Theme
    vor 3 Wochen 3 Tagen
  • Welches Theme benutzt du
    vor 3 Wochen 3 Tagen
  • Mit Responsive Raster hatte
    vor 3 Wochen 4 Tagen
  • Hallo Alex,um das Häkchen
    vor 3 Wochen 4 Tagen
  • Modul view_unpublished
    vor 3 Wochen 5 Tagen
  • Modul "override node options"
    vor 3 Wochen 6 Tagen
  • Im Grunde ist dass ein
    vor 4 Wochen 1 Tag

Statistik

Beiträge im Forum: 250270
Registrierte User: 20483

Neue User:

  • Aathivithyah
  • Aoirhic
  • Stevebok

» Alle User anzeigen

User nach Punkten sortiert:
wla9463
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 54 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association