Seite 2 von 2 ErsteErste 12
Ergebnis 26 bis 36 von 36

Thema: Dropdown in DB-Abrage durch Checkbox ergänzen

  1. #26
    Mitglied

    (Threadstarter)

    Avatar von HanZ
    Registriert seit
    Jul 2013
    Beiträge
    988

    Re: Dropdown in DB-Abrage durch Checkbox ergänzen

    @drfuture: Also ich habe ja einen Eintrag x, und der hat dann z.B. 10 Mehrausstattungen. Wenn ich jetzt danach filter, wer die Mehrausstattung "014" hat, dann soll der Eintrag x erscheinen, aber eben mit ALLEN Mehrausstattungen die Eintrag x besitzt. Mit der Lösung oben wird nur die "014" ausgegeben von SQL.

    Das mit der .htaccess meinst du jetzt vorgeschalten auf der Webseite bis ich alles mit SQL-Injection überprüft habe?

  2. #27
    Zeitreisender

    Administrator

    Avatar von drfuture
    Registriert seit
    Jul 2013
    Ort
    in der Zukunft
    Beiträge
    7.042
    ngb:news Artikel
    17

    Re: Dropdown in DB-Abrage durch Checkbox ergänzen

    hmmm die Gruppierung sollte eigentlich nach dem Select mit Eingrenzung (Where) stattfinden.
    Hast du einen Beispiel-SQL Dump und eine Abfrage die du gemacht hast damit man das mal ausprobieren kann?
    |_|D *`~{ Ich kenne deine Zukunft }~´* |_|D

  3. #28
    Mitglied

    (Threadstarter)

    Avatar von HanZ
    Registriert seit
    Jul 2013
    Beiträge
    988

    Re: Dropdown in DB-Abrage durch Checkbox ergänzen

    Hey zusammen,

    mit etwas Hilfe per PN ist es jetzt fast so wie ich es haben wollte. Nur noch kleine Anpassungen und etwas schöneren Code, aber ansonsten funktioniert es grundlegend schonmal. Danke für die ganze Hilfe bis hierher. Wenn ich mich dann mit SQL-Injections beschäftige, melde ich mich hier nochmal.

    LG
    HanZ
    Für diesen Beitrag bedankt sich BurnerR

  4. #29

    Re: Dropdown in DB-Abrage durch Checkbox ergänzen

    Du kannst auch einen entsprechenden MySQL Wrapper verwenden, dann brauchst Du Dich nicht um die SQL Injections kümmern. Mein Favorit ist da MeekroDB.
    Sehr einfach einzusetzen und gut abgehangen.
    Für diesen Beitrag bedankt sich BurnerR
    Gruß
    braegler

  5. #30
    Mitglied

    (Threadstarter)

    Avatar von HanZ
    Registriert seit
    Jul 2013
    Beiträge
    988

    Re: Dropdown in DB-Abrage durch Checkbox ergänzen

    Mal so grundsätzlich gefragt, ich weiß das sollte keine Praxis sein und ist es auch nicht, aber wenn der User der sich mit der Datenbank verbindet nur SELECT-Rechte hat und auch nur für diese Datenbank, dann sind SQL-Injections doch nicht möglich oder?

  6. #31
    since 1998

    Moderator

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    25.851
    ngb:news Artikel
    4

    Re: Dropdown in DB-Abrage durch Checkbox ergänzen

    @HanZ: Doch auch da.

    SQL Injections laufen ja so ab, dass man etwas übergibt, zum Beispiel einen SQL-Befehl, der wenn nicht richtig "escaped" (abgefangen) wurde ausgeführt wird.

    Im Grunde ist sowas immer möglich. Häufige Fehler ist zum Beispiel "Blind" einen SQL Querystring zu bilden:
    Böse wäre daher:
    "SELECT * FROM table WHERE id=" + id

    Was hier schief läuft, das "id" wird nicht behandelt sonder blind angehängt. Mit etwas "Voodoo" könnte es passieren das "id" keine Nummer enthält, sondern einen bösartig gestalten Befehl der dann von SQL verarbeitet und ausgeführt wird.

    Generell gilt, wenn man zum Beispiel HTML bekommt, htmlspecialchars, siehe hier https://www.php.net/manual/en/functi...ecialchars.php oder ähnliche Befehle anzuwenden. Und immer daran denken, "User Input ist böse!"

    Was auch helfen kann: https://www.php.net/manual/en/function.addslashes.php

    Und das Beste: mysql_escape_string https://www.php.net/manual/en/functi...-escape-string !
    Für diesen Beitrag bedankt sich BurnerR

  7. #32
    Mitglied

    (Threadstarter)

    Avatar von HanZ
    Registriert seit
    Jul 2013
    Beiträge
    988

    Re: Dropdown in DB-Abrage durch Checkbox ergänzen

    Was könnte denn der SQL-Befehl da dann bewirken? Er hat ja nur Rechte für SELECT. Passwörter ändern oder andere böse Sachen sind da dann ja nicht möglich?
    (Mir gehts nur ums Verständnis, ich werde natürlich beachten dass da keine SQL-Injections möglich sind)

  8. #33
    since 1998

    Moderator

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    25.851
    ngb:news Artikel
    4

    Re: Dropdown in DB-Abrage durch Checkbox ergänzen

    @HanZ: Hm, zum Beispiel könnte "id" so aussehen:

    SELECT * FROM table WHERE id=" + id

    Zum Beispiel dann einen Subquery: https://www.mysqltutorial.org/mysql-subquery/

    Also sowas hier
    1 AND officeCode IN (SELECT officeCode FROM offices WHERE country = 'USA';)

    Die 1 ist deine ID, soweit ja in Ordnung, aber das was dann als "AND" Code kommt, kann Daten publizieren die du nicht herausgeben wolltest. Im schlimmsten Fall.

  9. #34
    Mitglied

    (Threadstarter)

    Avatar von HanZ
    Registriert seit
    Jul 2013
    Beiträge
    988

    Re: Dropdown in DB-Abrage durch Checkbox ergänzen

    Okay verstehe
    Die Art der Abfrage im ursprünglichen Link ist ja gegen SQL-Injections entsprechend gewappnet, korrekt (mit dem bindValue, wenn ich das alles richtig verstehe)?
    https://werner-zenk.de/mysql/auswahl..._einsetzen.php

  10. #35
    since 1998

    Moderator

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    25.851
    ngb:news Artikel
    4

    Re: Dropdown in DB-Abrage durch Checkbox ergänzen

    @HanZ: Ja.

    Wobei:
    Code (PHP):
    1.  
    2.  $placeholder = [":p1", ":p2", ":p3", ":p4", ":p5"];
    3.  $filter = [];
    4.  $conditions = [];
    5.  $nr = 0;
    6.  
    7. // .... cutout
    8.  
    9.  if ($_POST["Farbe"] != 'Alle') {
    10.   $filter[] = $_POST["Farbe"];
    11.   $conditions[] = "`Farbe` = " . $placeholder[$nr];
    12.   $nr++;
    13.  }
    Die Abfrage läuft ja über "$nr" aus den Platzhaltern, das heißt der Nutzer kann theoretisch nur eine Nummer vorgeben und der korrekte Code Part wird dann aus den "$placeholder" herausgesucht. Von daher ist das ziemlich safe. Trotz des Verkettens mit $conditions[] = "`Farbe` = " . $placeholder[$nr];.

    Aber das Bindvalue tut auch sein übriges. Wenn du es noch verbessern willst, kannst du einen Typen bzw. Einheit für einen Wert mitgeben:
    Siehe hier: https://www.php.net/manual/en/pdostatement.bindvalue

    Und auch das Implode hier, auch wenn es über Post übergeben wird:
    Code (PHP):
    1. f (count($conditions)) {
    2.   $query .= " WHERE " . implode(" AND ", $conditions);
    3.  }
    4.  $query .= " ORDER BY `Preis` DESC";
    5.  
    6.  $select = $db->prepare($query);
    7.  foreach ($filter as $nr => $f) {
    8.   $select->bindValue($placeholder[$nr], $f);
    9.  }
    Für diesen Beitrag bedankt sich HanZ
    Geändert von theSplit (12.11.20 um 20:03 Uhr)

  11. #36
    Bot #0384479 Avatar von BurnerR
    Registriert seit
    Jul 2013
    Beiträge
    4.924
    ngb:news Artikel
    3

    Re: Dropdown in DB-Abrage durch Checkbox ergänzen

    So zu programmieren wird letztendlich zwangsläufig zu SQL-Injections führen. Du solltest direkt umsteigen auf mysql wrapper wie von braegler erwähnt oder prepared statements ausschließlich nutzen. Niemals jemals wieder so ein Muster
    Code:
    $part_of_my_query = "..." . $var
    verwenden.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •