WinFuture-Forum.de: SQL Injection - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

SQL Injection Wie löst ihr das?

#16 Mitglied ist offline   FenKeN 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 22. September 11
  • Reputation: 8
  • Geschlecht:Männlich
  • Wohnort:Erding
  • Interessen:Php, C#, Programmierung

geschrieben 01. Oktober 2011 - 14:14

richtig.

$db = $sql->prepare("UPDATE tabellenname SET spaltenname=:platzhalter;");
$db->bindValue(':platzhalter',$variable);
$db->execute();

Dieser Beitrag wurde von CryztaN bearbeitet: 01. Oktober 2011 - 14:16

MVC Tutorial
<?php
	echo "Liebe Grüße FenKeN";
?>
0

Anzeige



#17 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.170
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 03. Oktober 2011 - 09:17

Beitrag anzeigenZitat (CryztaN: 01. Oktober 2011 - 14:14)

richtig.

$db = $sql->prepare("UPDATE tabellenname SET spaltenname=:platzhalter;");
$db->bindValue(':platzhalter',$variable);
$db->execute();




Ja aber ich will ja nicht den einzusetzenden Wert, sondern den Spaltennamen variabel gestalten. Also beispielsweise ich habe eine Tabelle mit 5 Spalten, die einen Zustand kennzeichnen. Ich mach mal einfach ein Beispiel mit nem Menschen.

Die Spalten heißen dann "geboren", "einschulung", "arbeitsaufnahme", "rente", "gestorben".

Immer wenn eines der Ereignisse eintritt, wird das registriert und in der enstprechende Spalte ein Eintrag gemacht. Eingetragen wird immer now() aber als variablen Wert gebe ich den Spaltennamen mit, in welche Spalte das eingetragen werden soll.

und dann müßte ich das ja so schreiben:

$db = $sql->prepare("UPDATE tabellenname SET :platzhalter = now() ;");
$db->bindValue(':platzhalter',$variable);
$db->execute();

Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#18 Mitglied ist offline   TO_Webmaster 

  • Gruppe: Moderation
  • Beiträge: 3.225
  • Beigetreten: 27. März 02
  • Reputation: 82
  • Geschlecht:Männlich

geschrieben 03. Oktober 2011 - 09:55

Beitrag anzeigenZitat (Holger_N: 03. Oktober 2011 - 09:17)

$db = $sql->prepare("UPDATE tabellenname SET :platzhalter = now() ;");
$db->bindValue(':platzhalter',$variable);
$db->execute();


Das geht so leider nicht.


Beitrag anzeigenZitat (Holger_N: 03. Oktober 2011 - 09:17)

Immer wenn eines der Ereignisse eintritt, wird das registriert

Wie machst du das genau? Wenn du die Ereignisse einzeln abfragst, könntest du eine Variable je nach Ereignis setzen und dann das Query absenden, z.B. so:

<?php
// [...]
switch( $_POST['ereignis'] ){
    case 'geboren':
        $sqlereig = 'geboren';
        // Weiterer Code für dieses Ereignis
        break;
    case 'einschulung':
        $sqlereig = 'einschulung';
        // Weiterer Code für dieses Ereignis
        break;
    // Weitere Cases...
    default:
        throw new Exception('Es ist ein unerwarteter Fehler aufgetreten.');
        break;
}
$sql->query( 'UPDATE tabellenname SET ' . $sqlereig . ' = now() ;' );
// [...]
?>


MfG TO_Webmaster
The old reverend Henry Ward Beecher
called a hen the most elegant creature.
The hen pleased for that,
laid an egg in his hat.
And so did the hen reward Beecher.
0

#19 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.170
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 03. Oktober 2011 - 10:46

Beitrag anzeigenZitat (TO_Webmaster: 03. Oktober 2011 - 09:55)


Wie machst du das genau? Wenn du die Ereignisse einzeln abfragst, könntest du eine Variable je nach Ereignis setzen und dann das Query absenden, z.B. so:

<?php
// [...]
switch( $_POST['ereignis'] ){
    case 'geboren':
        $sqlereig = 'geboren';
        // Weiterer Code für dieses Ereignis
        break;
    case 'einschulung':
        $sqlereig = 'einschulung';
        // Weiterer Code für dieses Ereignis
        break;
    // Weitere Cases...
    default:
        throw new Exception('Es ist ein unerwarteter Fehler aufgetreten.');
        break;
}
$sql->query( 'UPDATE tabellenname SET ' . $sqlereig . ' = now() ;' );
// [...]
?>


MfG TO_Webmaster


Ja so ähnlich mach ich das ja momentan aber ich hatte gedacht, mit der Platzhaltervariante könnte man dann die übergebene Variable direkt benutzen und sich die Einzelabfrage sparen.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#20 Mitglied ist offline   FenKeN 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 22. September 11
  • Reputation: 8
  • Geschlecht:Männlich
  • Wohnort:Erding
  • Interessen:Php, C#, Programmierung

geschrieben 03. Oktober 2011 - 12:58

Das funktioniert leider nur so: name=:platzhalter

Mit ner switch waer deine Aufage am Leichtesten zu lösen.

Lg
MVC Tutorial
<?php
	echo "Liebe Grüße FenKeN";
?>
0

#21 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.170
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 03. Oktober 2011 - 13:02

Jo dann lass ich das so, wie es ist. Muß man nur aufpassen, dass man sich nicht vertippt und dann unter "Geboren" eingetragen wird "Es ist ein unerwarteter Fehler aufgetreten." Das gibt dann Ärger mit den Eltern.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#22 Mitglied ist offline   FenKeN 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 22. September 11
  • Reputation: 8
  • Geschlecht:Männlich
  • Wohnort:Erding
  • Interessen:Php, C#, Programmierung

geschrieben 03. Oktober 2011 - 13:11

Beitrag anzeigenZitat (Holger_N: 03. Oktober 2011 - 13:02)

dass man sich nicht vertippt und dann unter "Geboren" eingetragen wird "Es ist ein unerwarteter Fehler aufgetreten." Das gibt dann Ärger mit den Eltern.


:D ich musste richtig schmunzeln. Ja, Webmaster hat das eigentlich schon sehr aussagekräftig dargestellt.

lg
MVC Tutorial
<?php
	echo "Liebe Grüße FenKeN";
?>
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0